是否可以使用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。