是否可以使用jQuery ajax调用来使用ASP.NET MVC执行表单验证?我已经找不到任何这样的例子。
解决方法
是的,这是可能的。
只需使用方法 described here by mike bosch提交登录表单,并返回一个带有returnUrl的json数据结构(如果有的话)。
只需使用方法 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。