mvc客户端验证失败了,因为我正在做一个ajax jquery.post
您好,我正在使用一些ajax和jquery来执行表单的发布 以下是我的jquery:mvc客户端验证失败了,因为我正在做一个ajax jquery.post,jquery,asp.net-mvc,validation,Jquery,Asp.net Mvc,Validation,您好,我正在使用一些ajax和jquery来执行表单的发布 以下是我的jquery: $("#submit").click(function (e) { e.preventDefault(); $.post("Account/LogOn", $(this.form).serialize(), function (data) {
$("#submit").click(function (e) {
e.preventDefault();
$.post("Account/LogOn",
$(this.form).serialize(),
function (data) {
if (data.redirect) {
// data.redirect contains the string URL to redirect to
window.location.href = data.redirect;
}
else {
// data.form contains the HTML for the replacement form
$("#error").replaceWith(data.error);
}
},
'json'
);
return false;
});
这与预期一样有效,但是内置MVC验证不再有效?
(如果省略错误消息并提交表单,则错误消息不会显示所需用户名/密码。)
知道客户端验证不再有效的原因吗
谢谢因为客户端验证是由表单帖子触发的,而您不再发布表单,所以您执行的是jQuery帖子,它基本上绕过了验证触发器。您必须在javascript中手动触发验证,然后检查客户端验证是否发现任何错误,如果没有,则可以继续ajax post 编辑:了解如何做到这一点。代码将类似于此
$("#submit").click(function (e) {
e.preventDefault();
$(this.form).validate();
if($(this.form).valid())
{
$.post("Account/LogOn",
$(this.form).serialize(),
function (data) {
if (data.redirect) {
// data.redirect contains the string URL to redirect to
window.location.href = data.redirect;
}
else {
// data.form contains the HTML for the replacement form
$("#error").replaceWith(data.error);
}
},
'json'
);
return false;
}
});
我的第一个猜测是,您正在替换的HTML被替换为无效标记。导致现有JavaScript验证无法工作。我需要更多地了解AJAX请求返回的内容。替换工作正常,如果用户名/密码组合不存在,它会显示一个字符串“提供的用户名或密码不正确”。我在问为什么客户端验证不再有效——它是mvc项目btwDepends附带的基本登录表单,您使用的是哪个验证框架。jquery验证可能如下所示。编辑了我的答案以便澄清。