我有一个巨大的表格,我根据意见(部分)&的ViewModels。
主窗体视图包含对:
的调用@Html.Partial("Educations", @Model)
部分视图通过循环遍历@Model呈现自身,为每条记录生成Div行(TextBox不是TextBoxFor或任何其他Html帮助程序)。
发生的情况是,没有为部分视图生成验证数据属性。
但需要注意的是,一旦我动态加载主窗体视图,我会执行以下操作:
(function ($) {
$.fn.updateValidation = function () {
var form = this.find("form")
.removeData("validator")
.removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse(form);
return this;
};
})(jQuery的);
此外,局部视图包含一个用于添加更多行的按钮。当我添加其他行时,那些新添加的行正在验证,因为我手动注入数据验证。
现在的问题是,在加载表单时呈现的行没有任何数据验证属性,因此甚至调用上面的插件来重新初始化不显眼的验证,不会帮助或产生任何差异。
由于
答案 0 :(得分:4)
尝试在部分视图中添加表单上下文:
@model MyViewModel
@{
ViewContext.FormContext = new FormContext();
}
...
@Html.EditorFor(x => x.Foo)
如果Html.TextBoxFor
中没有使用Html.BeginForm
等HTML帮助程序,则它们不会发出HTML5 data- *属性。如果范围内有FormContext
,它们只会发出这些属性。