我在部分视图中有一个带有必填字段的表单。我尝试提交表单并获得验证错误,这是预期的行为。现在我填写必填字段并提交表单,我的controllerAction将替换部分视图。
现在我再次清空所需的字段并尝试再次提交 - 并提交表单。我的验证错误很难,但我的页面正在发送POST请求。
这里发生了什么?
修改
Zruty给出了正确答案,我更新了我的ajaxSetup:
$j.ajaxSetup({
statusCode: {
200: function (data, textStatus, jqXHR) {
$.validator.unobtrusive.parse(document);
}
}
});
答案 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>