ASP.NET MVC 3不生成验证数据属性

时间:2012-05-15 14:16:45

标签: jquery asp.net-mvc-3 jquery-plugins

我有一个巨大的表格,我根据意见(部分)&的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的);

此外,局部视图包含一个用于添加更多行的按钮。当我添加其他行时,那些新添加的行正在验证,因为我手动注入数据验证。

现在的问题是,在加载表单时呈现的行没有任何数据验证属性,因此甚至调用上面的插件来重新初始化不显眼的验证,不会帮助或产生任何差异。

由于

1 个答案:

答案 0 :(得分:4)

尝试在部分视图中添加表单上下文:

@model MyViewModel
@{
    ViewContext.FormContext = new FormContext();               
}

...
@Html.EditorFor(x => x.Foo)

如果Html.TextBoxFor中没有使用Html.BeginForm等HTML帮助程序,则它们不会发出HTML5 data- *属性。如果范围内有FormContext,它们只会发出这些属性。