我有多个视图/模型循环到主视图中。我通过@ Html.Partial()加载它们......这些视图/模型基本上是具有某些属性的表单元素...不幸的是我很快发现每种类型的视图/模型中只有第一个被验证。我尝试移动字段,只有每种类型的第一个都会验证。
我的部分观点看起来像这样:
@Html.DropDownListFor(model=>model.dropdownVal,Model.SelectItems,new { id=Model.FieldID, Name = Model.FieldID })
我查看了呈现的HTML,似乎没有应用像“data-val”这样的验证标签......
任何想法都将不胜感激!
答案 0 :(得分:3)
在partials的顶部添加以下内容,以诱使ASP.NET MVC认为帮助器在表单中使用并生成正确的data-val属性:
@{
this.ViewContext.FormContext = new FormContext();
}
基本上Html.*
助手只有在data-val
内放置Html.BeginForm
客户端验证属性时才会生成Html.BeginForm
个客户端验证属性。除非在您的情况下,我猜这个@Html.DropDownListFor
在您的父视图中,而不在部分内部,因此FormContext
不会发出任何验证属性。通过将当前{{1}}设置为部分中的新实例(如前所示),帮助程序将在相应的输入字段上生成正确的客户端验证属性。