jQuery& MVC:成功提交表单后关闭客户端验证

时间:2011-11-29 15:27:52

标签: jquery forms asp.net-mvc-3 validation submit

我在部分视图中有一个带有必填字段的表单。我尝试提交表单并获得验证错误,这是预期的行为。现在我填写必填字段并提交表单,我的controllerAction将替换部分视图。

现在我再次清空所需的字段并尝试再次提交 - 并提交表单。我的验证错误很难,但我的页面正在发送POST请求。

这里发生了什么?

修改

Zruty给出了正确答案,我更新了我的ajaxSetup:

$j.ajaxSetup({
    statusCode: {
        200: function (data, textStatus, jqXHR) {
            $.validator.unobtrusive.parse(document);
        }
    }
});

1 个答案:

答案 0 :(得分:3)

MVC3的“不引人注目的JavaScript验证”功能由jquery.validation插件提供支持。

加载页面后,其DOM将被完全解析以考虑所有验证属性。

显然,当您之后扩展DOM时,验证插件不会自动考虑这些添加的规则。

完成修改DOM后,可以通过调用$.validator.unobtrusive.parse(document)强制重新分析DOM文档:

    $.get("somedata.html", {}, function (data) {
        $("div.ajax-loaded").html(data);
        $.validator.unobtrusive.parse(document);
    }, "html");

编辑:我从未使用AjaxHelper进行我的AJAX通信,但您似乎可以轻松地将请求后处理转移到AjaxOptions.OnSuccess参数中:

@using(Ajax.BeginForm("Action", 
    new AjaxOptions { OnSuccess = "successCallback" }))
{
    ...
}
<script type="text/javascript">
    function successCallback(ajaxContext){
        $.validator.unobtrusive.parse(document);
    }
</script>