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目录已经存在。

最新文章

  1. Sharepoint学习笔记—习题系列--70-576习题解析 -(Q92-Q94)
  2. Leetcode 95. Unique Binary Search Tree II
  3. wireshark 和 Httpwatch tcpdump
  4. 20145304 Java第四周学习报告
  5. 是智能手机推动windows xp系统停止服务吗
  6. SQL Server select 将类型相同的行合并,并将对应金额相加
  7. csu 1306 Manor(优先队列)
  8. Java-SSI框架学习
  9. Python你必须知道的十个库
  10. d3.js多个x轴y轴canvas柱状图
  11. [原创]Faster R-CNN论文翻译
  12. 简易商品信息管理系统——首个Web项目
  13. ASP.NET Core Identity Hands On(2)——注册、登录、Claim
  14. FF中flash滚轮失效的解决方案
  15. TunnelBroker for EdgeRouter 后记
  16. python基本算法
  17. 关于springmvc下服务器文件打包成zip格式下载功能
  18. Laravel5.4使用Memcached缓存
  19. 在macOS上使用***
  20. SVN MERGE 方法(原创)

热门文章

  1. jQuery.hhNewSilder 滚动图片插件
  2. 我忽略了的DOCTYPE!
  3. 测试MySQL事务管理
  4. 开发设计模式(八)抽象工厂模式(Abstract Factory Pattern)
  5. ThinkPHP框架安全性能分析
  6. centos7和windows7双系统安装
  7. android ListView内数据的动态添加与删除
  8. 实现SELECT的全选,反选,AB选的JAVASCRIPT代码
  9. GridView使用CommandField删除列实现删除时提示确认框
  10. easyui源码翻译1.32--Tabs(选项卡)