Html.BeginForm与Ajax.BeginForm都是MVC架构中的表单元素,它们从字面上可以看到区别,即Html.BeginForm是普通的表单提交,而Ajax.BeginForm是支持异步的表单提交,这对于我们开发者来说是一个福音,我们不用再自己去用JQ代码了,直接用MVC自代的Ajax.BeginForm就可以很容易的完成一个异步的表单提交动作。

Html.BeginForm的原型解释:
@using (Html.BeginForm()) {} //提交到当前页面@using (Html.BeginForm(new {} )) {} //提交到当前页面,并可以传递参数@using (Html.BeginForm("action","controller")) {} //提交到指定controller下的action中@using (Html.BeginForm("action","controller",FormMethod.POST)) {} //提交到指定controller下的action中,并指定提交方式FormMethod枚举如下:   // 摘要://     枚举窗体的 HTTP 请求类型。public enum FormMethod{// 摘要://     指定 GET 请求。Get = 0,//// 摘要://     指定 POST 请求。Post = 1,}

Ajax.BeginForm异步表单原型解释
@using (Ajax.BeginForm(new AjaxOptions{UpdateTargetId = "UserLogOnContainer",HttpMethod = "Post",OnSuccess = " ",})){} //提交到当前页面,提交方式为Post,异步更新模块ID为UserLogOnContainer@using (Ajax.BeginForm("action", "controller", null,new AjaxOptions{UpdateTargetId = "UserLogOnContainer",HttpMethod = "Post",OnSuccess = " ",})){} //提交到指定controller下的action,提交方式为Post,异步更新模块ID为UserLogOnContainer

下面看一下Ajax.BeginForm的例子,一个用户登陆的DEMO

View代码:

@model TsingDa.Ask.Models.UserLogOnModel
@{Layout = "";}
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")" type="text/javascript"></script>
<div id="UserLogOnContainer">@using (Ajax.BeginForm("UserLogOn", "Home", null,new AjaxOptions{UpdateTargetId = "UserLogOnContainer",HttpMethod = "Post",OnSuccess = " ",})){@Html.ValidationSummary(true)<div class="editor-field">@Html.TextBoxFor(m => m.Email)@Html.ValidationMessageFor(m => m.Email)</div><div class="editor-field">@Html.TextBoxFor(m => m.Password)@Html.ValidationMessageFor(m => m.Password)</div><input type="submit" id="logOnBtn" value="登陆" />}
</div>

Controller层代码如下:

/// <summary>/// 用户登陆/// </summary>/// <returns></returns>public ActionResult UserLogOn(){return View(new UserLogOnModel("邮箱", "密码"));}[HttpPost]public ActionResult UserLogOn(UserLogOnModel entity){if (ModelState.IsValid){VM = user_InfoManager.UserLogOn(new User_Info { Email = entity.Email, Password = entity.Password });if (VM.IsComplete){return RedirectToAction("Index", "Home");}else{VM.ToList().ForEach(i => ModelState.AddModelError("", i));}}return View();}

放一下对应的model实体

/// <summary>/// 用户登陆/// </summary>public class UserLogOnModel{public UserLogOnModel(){this.Email = "登陆名";this.Password = "密码";}[Required][DataType(DataType.EmailAddress)][Display(Name = "邮箱")]public string Email { get; set; }[Required][DataType(DataType.Password)][Display(Name = "密码")]public string Password { get; set; }}

表单提交后,页面效果如下:

需要注意的是,表单中的按钮在异步表单中也是Submit类型,如果是异步表单,引入的JS文件需要有jquery.unobtrusive-ajax.min.js,在这项目的scripts目录已经存在。

转:MVC3系列:~Html.BeginForm与Ajax.BeginForm相关推荐

  1. Html.BeginForm() vs Ajax.BeginForm() in MVC3

    我们知道,BeginForm()方法能创建一个Form标签,因此可以结合表单级的方法,在这个页面中.我一直在考虑Html.BeginForm()方法和Ajax.BeginForm()方法在MVC3中有 ...

  2. ajax.beginform onfailure,如何使用Ajax.BeginForm OnSuccess和OnFailure方法?

    我也寻找相同的答案,但看起来像Ajax.BeginForm()..的事件的都有详细的记载或需要更多的自我实验发现当这些onSuccess和onFailure事件被调用时.但是我得到了一个非常简单直接的 ...

  3. Ajax.BeginForm无法调用 ajaxOptions的js函数

    使用ajax.beginForm无法调用ajaxOptions的js函数的原因,一般都是缺少以下2个JS文件: 1,Install-Package jQuery –version 1.10.2 2,I ...

  4. data ajax begin,Ajax.BeginForm()知多少

    在ASP.NET MVC中,Ajax.BeginForm扮演着异步提交的重要角色.其中就有五个重载方法,可是在实际应用中,你未必使用的驾轻就熟,今天咱们就从主要的参数来一探究竟. javascript ...

  5. C#MVC Razor的Ajax.BeginForm里面的OnSuccess未执行(未成功跳转)

    C#MVC Razor的Ajax.BeginForm里面的OnSuccess未执行(未成功跳转),结合网上的说法,检查以下位置 1.引用Jquery,注意版本,网上说版本要低一点 <script ...

  6. 爱上MVC3系列~分部视图中的POST

    在PartialView中进行表单提交,有什么用呢,我来总结一下: 1 这个表单不只一个地方用到 2 可能涉及到异步的提交问题 这两种情况都有可能需要把表单建立在"分部视图"中,我 ...

  7. ASP.NET MVC3 系列教程 - 目录

    I:ASP.NET MVC3 新增的功能 ASP.NET MVC3 系列教程 - Razor视图引擎基础语法 ASP.NET MVC3 系列教程 - View的变化 ASP.NET MVC3 系列教程 ...

  8. js系列教程11-json、ajax(XMLHttpRequest)、comet、SSE、WebSocket全解

    全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...

  9. asp.net core mvc 异步表单(Ajax.BeginForm)

    .net core中已经没有beginform扩展函数了. 通过Bower引入jquery-ajax-unobtrusive: <script src="~/lib/jquery-aj ...

最新文章

  1. QQ web api
  2. MapReduce 模式、算法和用例
  3. 文件上传(input为file类型)
  4. 《柯南 绯红色的子弹》 观后感
  5. Cookie的生命周期问题
  6. 第二十二章 5为你的命名空间取个别名
  7. No changes detected解决方案
  8. win7 ie临时文件夹怎么修改存放位置
  9. 早上起床后喝的第一杯水不要喝太多
  10. php加密解密函数,PHP加密解密的函数
  11. ajax请求几个状态,ajax的请求步骤!每个状态值表示什么?
  12. IDEA HTML 动态访问本地图片加载失败
  13. 生态环境影响评价技术应用及典型实践案例分析
  14. 赛尔号通信数据的逆向分析与还原(思路篇)
  15. html通过拼音首字母定位,javascript实现通过拼音首字母快速选择下拉列表
  16. 《尚书》全文、注释及译文(1)
  17. 坐标转换工具类:84坐标系,火星坐标系,与百度坐标系之间的互相转换
  18. 微信公众号开发-取得AccessToken
  19. 外贸常用术语_对外贸易常用的贸易术语有几种?分别是,,,
  20. FINN(三)BNN在FPGA上的准确性和峰值性能

热门文章

  1. Windows 下开发PHP扩展资源
  2. 查看ubuntu版本
  3. Oracle 11g 新特性 -- 自动诊断资料档案库(ADR) 说明
  4. C# 重写WndProc 消息循环
  5. c#中程序以管理员身份运行的三种办法
  6. C# 跨线程调用控件
  7. VC的MFC中重绘函数的使用总结(整理)
  8. C++中的“error:LNK2005 已经在*.obj中定义”异常
  9. Android—显示窗口调用相机与相册
  10. php返回mysql错误语句_[已解决]php查询mysql返回了错误的结果