Pie*_*aud 4 c# validation custom-attributes asp.net-mvc-viewmodel
要使用正则表达式进行验证,我通常会这样做:
// In my ViewModel
[RegularExpression("MyRegex", ErrorMessageResourceName = "MyErrorMessage")]
public string MyField { get; set; }
Run Code Online (Sandbox Code Playgroud)
和HTML助手
@Html.TextBoxFor(model => model.MyField)
Run Code Online (Sandbox Code Playgroud)
生成一个如下所示的标记:
<input type="text" class="valid" name="MyField" value="" id="MyField" data-val="true" data-val-regex-pattern="MyRegex" data-val-regex="MyErrorMessage"></input>
Run Code Online (Sandbox Code Playgroud)
问题是我希望有一个动态数量的字段,现在正在使用
// In my ViewModel
[RegularExpression("MyRegex", ErrorMessageResourceName = "MyErrorMessage")]
public IList<string> MyField { get; set; }
Run Code Online (Sandbox Code Playgroud)
这次
@Html.TextBoxFor(model => model.MyField[0])
Run Code Online (Sandbox Code Playgroud)
将生成(没有正则表达式html属性)
<input id="MyField_0_" type="text" value="" name="MyField[0]"></input>
Run Code Online (Sandbox Code Playgroud)
如何data-val在我的ViewModel中绑定具有DataAnnotation验证属性的列表的元素时,如何确保创建html属性?
数据批注实际上没有办法应用于列表的元素.您需要做的是创建一个包装类并将Data Annotation应用于包装类中的元素,如下所示:
public IList<MyField> MyFields {get;set;}
public class MyField
{
[RegularExpression("MyRegex", ErrorMessageResourceName = "MyErrorMessage")]
public string Value
}
Run Code Online (Sandbox Code Playgroud)
用法:
@Html.TextBoxFor(model => model.MyFields[0].Value)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3677 次 |
| 最近记录: |