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

Bil*_*ill 2 jquery jquery-plugins asp.net-mvc-3

我有一个巨大的表单,我将其分成视图(部分)和视图模型。

主表单视图包含对以下内容的调用:

@Html.Partial("Educations", @Model)
Run Code Online (Sandbox Code Playgroud)

部分视图通过循环 @Model 来呈现自身,为每个记录生成一个 Div 行(TextBox 不是 TextBoxFor 或任何其他 Html 帮助器)。

发生的情况是,没有为部分视图生成验证数据属性。

但需要注意的是,一旦我动态加载主表单视图,我就会执行以下操作:

(function ($) {

$.fn.updateValidation = function () {
    var form = this.find("form")
        .removeData("validator")
        .removeData("unobtrusiveValidation");

    $.validator.unobtrusive.parse(form);

    return this;
};
Run Code Online (Sandbox Code Playgroud)

})(jQuery);

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

现在的问题是,加载表单时呈现的行没有任何数据验证属性,因此即使调用上述插件来重新初始化不引人注目的验证,也不会有所帮助或产生任何影响。

谢谢

Dar*_*rov 5

尝试将表单上下文添加到您的局部视图中:

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

...
@Html.EditorFor(x => x.Foo)
Run Code Online (Sandbox Code Playgroud)

如果 HTML 帮助器没有Html.TextBoxFor在 a 中使用,Html.BeginForm它们将不会发出 HTML5 data-* 属性。它们仅在存在范围内时发出这些属性FormContext