我有一个问题,基本上我有一个有很多字段的表单,并且它们都具有必需的属性集,所以当您将它留空并单击确定,你会得到客户端验证,并且它变成红色。它对所有exept EditorTemplate都适用。MVC3编辑器模板不会生成客户端验证
我的模型如下:
public class MyModel
{
[Required]
public string Username{get;set;}
public Location Loc{get;set;}
}
public class Location
{
[Required]
public string Loc1{get;set;}
[Required]
public string Loc2{get;set;}
}
我在我的主要观点如下:
@Html.EditorFor(m => m.Location, Model.Location)
这里是我的EditorTemplate:
<tr>
<td class="editor-label">
@Html.LabelFor(m => m.Loc1)
</td>
<td class="editor-field">
@Html.DropDownListFor(m => m.Loc1, Model.Locs==null?Enumerable.Empty<SelectListItem>():Model.Locs, "---select--", new { @class = "location-ddl" })
</td>
<td>
@Html.ValidationMessageFor(m => m.Loc1)
</td>
</tr>
...
调查完毕后NG它thouroughtly我注意到,HTML它prodcues是以下几点:
<select name="Location.Loc1" id="Location_Loc1">
正如你可以看到它缺少对客户端验证某些属性,通常它应该是这样的:
<select name="Loc1" id="Loc1" data-val-required="The Loc1field is required." data-val="true">
我的问题是,为什么编辑器模板不能通过客户端验证生成正确的html输出,以及如何修复它?
只是为了说明它确实在服务器端工作,所以如果这些选择在服务器端是空的,它将被标记为未被填充并被发回。但是,我仍想了解editorform的行为和解决方法。
感谢
客户端验证是否适用于'UserName'属性? – Shyju
是的,它确实有效! – Alnedru
没有人真的遇到过这种问题吗? – Alnedru