要使用正则表达式进行验证,我通常这样做:
// In my ViewModel
[RegularExpression("MyRegex", ErrorMessageResourceName = "MyErrorMessage")]
public string MyField { get; set; }
以及 HTML 帮助程序
@Html.TextBoxFor(model => model.MyField)
生成如下所示的标记:
<input type="text" class="valid" name="MyField" value="" id="MyField" data-val="true" data-val-regex-pattern="MyRegex" data-val-regex="MyErrorMessage"></input>
问题是我想要有动态数量的字段并且现在正在使用
// In my ViewModel
[RegularExpression("MyRegex", ErrorMessageResourceName = "MyErrorMessage")]
public IList<string> MyField { get; set; }
这次
@Html.TextBoxFor(model => model.MyField[0])
将生成(没有正则表达式 html 属性)
<input id="MyField_0_" type="text" value="" name="MyField[0]"></input>
我怎样才能确保data-val
在我的 ViewModel 中绑定具有 DataAnnotation 验证属性的列表元素时,会创建 html 属性吗?
实际上没有一种方法可以将数据注释应用于列表的元素。您需要做的是创建一个包装类并将数据注释应用到包装类中的元素,如下所示:
public IList<MyField> MyFields {get;set;}
public class MyField
{
[RegularExpression("MyRegex", ErrorMessageResourceName = "MyErrorMessage")]
public string Value
}
Usage:
@Html.TextBoxFor(model => model.MyFields[0].Value)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)