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://HdhCmsTestcnblogs测试数据/Leo_wl/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
版权信息查看更多关于Html.BeginForm与Ajax.BeginForm的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did48684