c# - 如何使用 javascript 添加 @html 标签?

标签 c# javascript asp.net asp.net-mvc asp.net-mvc-4

有时您需要添加另一个文本框 或其他输入类型以获取更多信息。好吧,比如说,一个Customer 可以有多个Address。当用户完成表单并到达地址时,他可以点击加号为另一个地址添加另一个文本框。所以我所做的是这样的:(不知道是否推荐)

HTML:

<a href="#" class="add-address">Additional Address</a>
<div class="address-container"></div>

JS:

<script>
$(function() {
  var i = 0;
  var addAddress = function() {
    var strBuilder = '<input type="text" name="Addresses[i].Location" />';
    $('.address-container').append(strBuilder);
    i++;

    return false;
  };
  $('.add-address').click(addAddress);
});
</script>

所以我的问题是:

  1. 是否可以将文本框添加为 @Html.EditorFor()?
  2. 如果我也可以在 @Html.ValidationMessageFor() 中添加,那真的很棒,这可能吗?

我正在使用 ASP.NET MVC 4; EF 代码优先方法。

任何帮助将不胜感激。谢谢。

最佳答案

只需使用 i 作为名称属性。

name="Addresses[' + i + '].Location"

这应该与您的模型绑定(bind)。

  var i = 0;
  var addAddress = function() {
    var strBuilder = '<input type="text" value="" name="Addresses[' + i + '].Location">';
    $('.address-container').append(strBuilder);
    i++;
    return false;
  };

参见 this post这对我很有用。

已更新

为了验证,只需将此属性也与输入元素一起添加。

data-val-email="The Email field is not a valid e-mail address." 

data-val="true"

这背后的一个想法是,将正确的元素附加到名称属性和验证(data-val="true")。 您可以看到已使用验证的已工作页面的渲染 html。

关于c# - 如何使用 javascript 添加 @html 标签?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25062294/

相关文章:

c# - 无法理解这个 IEnumerable<T>.ToArray() 示例

c# - 当被 JSON.NET 序列化时,属性的顺序变得困惑

javascript - 在不同的列中显示 JSON 结果 Angular JS

javascript - 获取当前部分 ID

javascript - 第三方应用程序中显示多个滚动条

c# - 异步 CTP - 推荐的任务调度方法

c# - 位数组 VS boolean []

javascript - 从 JavaScript 正确调用 Controller - ASP.NET MVC

asp.net - Azure 中的信号量超时期限已过期

asp.net - 整数列表到逗号分隔的字符串