2011-11-29 56 views
1

我有一个带有必填字段的局部视图窗体。我尝试提交表单并获得预期行为的验证错误。现在我填写必填字段并提交表单,我的ControllerAction替换了部分视图。jQuery&MVC:成功提交表单后客户端验证功能关闭

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

这里发生了什么?

编辑

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

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

是您的形式通过AJAX从浏览器发布,或直接? – Zruty

+0

它通过AJAX提交,我使用助手'Ajax.BeginForm' – iappwebdev

回答

3

MVC3的 '不显眼的JavaScript验证' 功能是通过jquery.validation插件供电。

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

很显然,当您之后展开DOM时,验证插件将不会自动解释这些添加的规则。

你可以通过调用$.validator.unobtrusive.parse(document)你完成修改DOM后,迫使你的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> 
+0

谢谢,这就是我所需要的。我扩展了我的ajaxSetup。我更新了我的问题,使其更具可读性。 – iappwebdev