是否可以使用jQuery ajax调用来使用ASP.NET MVC执行表单验证?我已经找不到任何这样的例子。
解决方法@H_301_6@
是的,这是可能的。
只需使用方法
described here by mike bosch提交登录表单,并返回一个带有returnUrl的json数据结构(如果有的话)。
我创建了一个轻量级的LoginResultDTO类,我返回为json:
public class LoginResultDTO
{
public bool Success {get;set;}
public string Message {get;set;}
public string ReturnUrl {get;set;}
}
这里是一个脚本块从我的logon视图:
<script type="text/javascript">
$(document).ready(function() {
var form = $($("form")[0]);
form.submit(function() {
var data = form.serialize();
$.post(form.attr("action"),data,function(result,status) {
if (result.Success && result.ReturnUrl) {
location.href = result.ReturnUrl;
} else {
alert(result.Message);
}
},"json");
return false;
});
});
</script>
这将使ajax包装登录表单。请注意,这是JavaScript代码的最简单的实现,但它是一个开始的地方。
然后我修改了我的logon操作在AccountController和在相关的地方放置这样:
if(Request.IsAjaxRequest())
{
return Json(new LoginResultDTO{Success=true,Message="Successfully logged in"});
}else
{
return View();
}
所以这是一个超轻但相当完整的版本的如何jquery身份验证可以在asp.net mvc。
只需使用方法 described here by mike bosch提交登录表单,并返回一个带有returnUrl的json数据结构(如果有的话)。
我创建了一个轻量级的LoginResultDTO类,我返回为json:
public class LoginResultDTO { public bool Success {get;set;} public string Message {get;set;} public string ReturnUrl {get;set;} }
这里是一个脚本块从我的logon视图:
<script type="text/javascript"> $(document).ready(function() { var form = $($("form")[0]); form.submit(function() { var data = form.serialize(); $.post(form.attr("action"),data,function(result,status) { if (result.Success && result.ReturnUrl) { location.href = result.ReturnUrl; } else { alert(result.Message); } },"json"); return false; }); }); </script>
这将使ajax包装登录表单。请注意,这是JavaScript代码的最简单的实现,但它是一个开始的地方。
然后我修改了我的logon操作在AccountController和在相关的地方放置这样:
if(Request.IsAjaxRequest()) { return Json(new LoginResultDTO{Success=true,Message="Successfully logged in"}); }else { return View(); }
所以这是一个超轻但相当完整的版本的如何jquery身份验证可以在asp.net mvc。