Html.BeginForm与Ajax.BeginForm
Html.BeginForm与Ajax.BeginForm都是MVC架构中的表单元素,它们从字面上可以看到区别,即Html.BeginForm是普通的表单提交,而Ajax.BeginForm是支持异步的表单提交,这对于我们开发者来说是一个福音,我们不用再自己去用JQ代码了,直接用MVC自代的Ajax.BeginForm就可以很容易的完成一个异步的表单提交动作。
Html.BeginForm的原型解释:
1 @using (Html.BeginForm()) {} // 提交到当前页面 2 3 @using (Html.BeginForm( new {} )) {} // 提交到当前页面,并可以传递参数 4 5 @using (Html.BeginForm( " action " , " controller " )) {} // 提交到指定controller下的action中 6 7 @using (Html.BeginForm( " action " , " controller " ,FormMethod.POST)) {} // 提交到指定controller下的action中,并指定提交方式 8 9 FormMethod枚举如下: 10 11 // 摘要: 12 // 枚举窗体的 HTTP 请求类型。 13 public enum FormMethod 14 { 15 // 摘要: 16 // 指定 GET 请求。 17 Get = 0 , 18 // 19 // 摘要: 20 // 指定 POST 请求。 21 Post = 1 , 22 }
Ajax.BeginForm异步表单原型解释
1 @using (Ajax.BeginForm( 2 new AjaxOptions 3 { 4 UpdateTargetId = " UserLogOnContainer " , 5 HttpMethod = " Post " , 6 OnSuccess = " " , 7 })){} // 提交到当前页面,提交方式为Post,异步更新模块ID为UserLogOnContainer 8 9 @using (Ajax.BeginForm( " action " , " controller " , null , 10 new AjaxOptions 11 { 12 UpdateTargetId = " UserLogOnContainer " , 13 HttpMethod = " Post " , 14 OnSuccess = " " , 15 })) 16 {} // 提交到指定controller下的action,提交方式为Post,异步更新模块ID为UserLogOnContainer
下面看一下Ajax.BeginForm的例子,一个用户登陆的DEMO
View代码:
1 @model TsingDa.Ask.Models.UserLogOnModel 2 @{Layout = "" ;} 3 <script src= " @Url.Content( " ~/Scripts/jquery.validate.min.js " ) " type= " text/javascript " ></script> 4 <script src= " @Url.Content( " ~/Scripts/jquery.validate.unobtrusive.min.js " ) " type= " text/javascript " ></script> 5 <script src= " @Url.Content( " ~/Scripts/jquery.unobtrusive-ajax.min.js " ) " type= " text/javascript " ></script> 6 <div id= " UserLogOnContainer " > 7 @using (Ajax.BeginForm( " UserLogOn " , " Home " , null , 8 new AjaxOptions 9 { 10 UpdateTargetId = " UserLogOnContainer " , 11 HttpMethod = " Post " , 12 OnSuccess = " " , 13 })) 14 { 15 @Html.ValidationSummary( true ) 16 <div class = " editor-field " > 17 @Html.TextBoxFor(m => m.Email) 18 @Html.ValidationMessageFor(m => m.Email) 19 </div> 20 <div class = " editor-field " > 21 @Html.TextBoxFor(m => m.Password) 22 @Html.ValidationMessageFor(m => m.Password) 23 </div> 24 <input type= " submit " id= " logOnBtn " value= " 登陆 " /> 25 } 26 </div>
Controller层代码如下:
1 /// <summary> 2 /// 用户登陆 3 /// </summary> 4 /// <returns></returns> 5 public ActionResult UserLogOn() 6 { 7 return View( new UserLogOnModel( " 邮箱 " , " 密码 " )); 8 } 9 [HttpPost] 10 public ActionResult UserLogOn(UserLogOnModel entity) 11 { 12 if (ModelState.IsValid) 13 { 14 VM = user_InfoManager.UserLogOn( new User_Info { Email = entity.Email, Password = entity.Password }); 15 if (VM.IsComplete) 16 { 17 return RedirectToAction( " Index " , " Home " ); 18 } 19 else 20 { 21 VM.ToList().ForEach(i => ModelState.AddModelError( "" , i)); 22 } 23 } 24 25 return View(); 26 }
表单提交后,页面效果如下:
需要注意的是,表单中的按钮在异步表单中也是Submit类型,如果是异步表单,引入的JS文件需要有jquery.unobtrusive-ajax.min.js,在这项目的scripts目录已经存在。
爱上MVC3目录
爱上MVC3系列~Razor模板页
爱上MVC3系列~全局异常处理与异常日志
爱上MVC3系列~使用视图模型的好处及与数据模型之间的赋值问题
爱上MVC3系列~RenderAction与RenderPartial及一个页面多个表单提交
爱上MVC3系列~Html.BeginForm与Ajax.BeginForm
分类: .NET MVC
作者: Leo_wl
出处: http://www.cnblogs.com/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于Html.BeginForm与Ajax.BeginForm的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://www.haodehen.cn/did48684