8

我有一个使用jQuery.validation.js插件和 MVC 的jQuery.validation.unobtrusive.js的ASP.NET MVC 4 应用程序。我在视图模型上使用数据注释来验证文本框的输入是否为整数。

此(嵌套)视图使用...加载到父视图中

<% Html.RenderPartial("New"); %>

第一个初始页面加载,客户端验证工作。但是任何使用 ajax 调用重新加载嵌套视图,客户端验证不再有效。这是为什么?

更新:(来自以下webdeveloper解决方案的代码示例)

$.validator.unobtrusive.parse($('form'));

例子:

var saveAndUpdate = function (url) {
    var myForm = $('form', $('#TheDivThatContainsTheNewHTML'));
    $.ajax({
        url: url,
        type: 'POST',
        data: myForm.serialize(),
        success: function (result) {
            $('#TheDivThatContainsTheNewHTML').html(result);
            $.validator.unobtrusive.parse($('#TheDivThatContainsTheNewHTML'));          
        },
        error: function (xhr, ajaxOptions, thrownError) {
            alert(xhr.status);
            alert(thrownError);
        },
        dataType: 'html'
    });
}
4

1 回答 1

12

But any reloading of the nested view with an ajax call, client side validation no longer works. Why is that?

验证适用于document ready,当您刷新页面时,您应该手动为您的表单初始化验证。

像这样:

$.validator.unobtrusive.parse("form");

同样的问题:jquery.validate.unobtrusive 不使用动态注入的元素

于 2013-04-19T13:36:40.807 回答