1

我有一个巨大的表单,我根据视图(部分)和视图模型进行拆分。

主窗体视图包含对以下内容的调用:

@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);

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

现在的问题是,加载表单时呈现的行没有任何数据验证属性,因此即使调用上述插件重新初始化不显眼的验证,也无济于事。

谢谢

4

1 回答 1

4

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

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

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

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

于 2012-05-15T14:48:16.530 回答