渲染多个部分视图时进行验证

时间:2013-09-18 21:17:06

标签: asp.net asp.net-mvc

我有多个视图/模型循环到主视图中。我通过@ Html.Partial()加载它们......这些视图/模型基本上是具有某些属性的表单元素...不幸的是我很快发现每种类型的视图/模型中只有第一个被验证。我尝试移动字段,只有每种类型的第一个都会验证。

我的部分观点看起来像这样:

 @Html.DropDownListFor(model=>model.dropdownVal,Model.SelectItems,new { id=Model.FieldID, Name = Model.FieldID })

我查看了呈现的HTML,似乎没有应用像“data-val”这样的验证标签......

任何想法都将不胜感激!

1 个答案:

答案 0 :(得分:3)

在partials的顶部添加以下内容,以诱使ASP.NET MVC认为帮助器在表单中使用并生成正确的data-val属性:

@{
    this.ViewContext.FormContext = new FormContext();
}

基本上Html.*助手只有在data-val内放置Html.BeginForm客户端验证属性时才会生成Html.BeginForm个客户端验证属性。除非在您的情况下,我猜这个@Html.DropDownListFor在您的父视图中,而不在部分内部,因此FormContext不会发出任何验证属性。通过将当前{{1}}设置为部分中的新实例(如前所示),帮助程序将在相应的输入字段上生成正确的客户端验证属性。

相关问题