有时您需要添加另一个文本框
或其他输入类型以获取更多信息。好吧,比如说,一个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>
所以我的问题是:
- 是否可以将文本框添加为
@Html.EditorFor()
? - 如果我也可以在
@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/