我有一个包含字符串的IEnumerable,使用Data Annotations进行验证:
[Required(ErrorMessage = "This is required.")]
[Remote("IsValid", "ControllerName")]
public IEnumerable<string> MyList { get; set; }
Run Code Online (Sandbox Code Playgroud)
我正在使用它与编辑器模板.这是我在视图中称之为的方式:
@Html.EditorFor(m => m.MyList)
Run Code Online (Sandbox Code Playgroud)
最后,我的模板采用了这个IEnumarable并为每个元素创建了许多表单元素:
@model IEnumerable<string>
@foreach (var str in Model)
{
<li>
@Html.LabelFor(m => str, "My Label")
@Html.TextBoxFor(m => str)
@Html.ValidationMessageFor(m => str)
</li>
}
Run Code Online (Sandbox Code Playgroud)
即使表单元素确实正确呈现,我是否正确接近?此外,我注意到它不再验证.我该如何解决这个问题?
你是以"正确"的方式去做的.(正确的说它可以工作,我以前做过这个)但是通过验证,我认为它不起作用的原因是这样,你有IEnemerable的验证而不是字符串.要对每个字符串进行验证.你必须创建一个新的模型对象说
public class LabelString
{
[Required(ErrorMessage = "This is required.")]
public string labelName { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后在哪里public IEnumerable<string> MyList { get; set; } 替换它public IEnumerable<LabelString> MyList { get; set; }
这应该可以让你对for循环中的每个标签进行验证.
| 归档时间: |
|
| 查看次数: |
4027 次 |
| 最近记录: |