转:MVC3系列:~Html.BeginForm与Ajax.BeginForm
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相关推荐
- Html.BeginForm() vs Ajax.BeginForm() in MVC3
我们知道,BeginForm()方法能创建一个Form标签,因此可以结合表单级的方法,在这个页面中.我一直在考虑Html.BeginForm()方法和Ajax.BeginForm()方法在MVC3中有 ...
- ajax.beginform onfailure,如何使用Ajax.BeginForm OnSuccess和OnFailure方法?
我也寻找相同的答案,但看起来像Ajax.BeginForm()..的事件的都有详细的记载或需要更多的自我实验发现当这些onSuccess和onFailure事件被调用时.但是我得到了一个非常简单直接的 ...
- Ajax.BeginForm无法调用 ajaxOptions的js函数
使用ajax.beginForm无法调用ajaxOptions的js函数的原因,一般都是缺少以下2个JS文件: 1,Install-Package jQuery –version 1.10.2 2,I ...
- data ajax begin,Ajax.BeginForm()知多少
在ASP.NET MVC中,Ajax.BeginForm扮演着异步提交的重要角色.其中就有五个重载方法,可是在实际应用中,你未必使用的驾轻就熟,今天咱们就从主要的参数来一探究竟. javascript ...
- C#MVC Razor的Ajax.BeginForm里面的OnSuccess未执行(未成功跳转)
C#MVC Razor的Ajax.BeginForm里面的OnSuccess未执行(未成功跳转),结合网上的说法,检查以下位置 1.引用Jquery,注意版本,网上说版本要低一点 <script ...
- 爱上MVC3系列~分部视图中的POST
在PartialView中进行表单提交,有什么用呢,我来总结一下: 1 这个表单不只一个地方用到 2 可能涉及到异步的提交问题 这两种情况都有可能需要把表单建立在"分部视图"中,我 ...
- ASP.NET MVC3 系列教程 - 目录
I:ASP.NET MVC3 新增的功能 ASP.NET MVC3 系列教程 - Razor视图引擎基础语法 ASP.NET MVC3 系列教程 - View的变化 ASP.NET MVC3 系列教程 ...
- js系列教程11-json、ajax(XMLHttpRequest)、comet、SSE、WebSocket全解
全栈工程师开发手册 (作者:栾鹏) 快捷链接: js系列教程1-数组操作全解 js系列教程2-对象和属性全解 js系列教程3-字符串和正则全解 js系列教程4-函数与参数全解 js系列教程5-容器和算 ...
- asp.net core mvc 异步表单(Ajax.BeginForm)
.net core中已经没有beginform扩展函数了. 通过Bower引入jquery-ajax-unobtrusive: <script src="~/lib/jquery-aj ...
最新文章
- QQ web api
- MapReduce 模式、算法和用例
- 文件上传(input为file类型)
- 《柯南 绯红色的子弹》 观后感
- Cookie的生命周期问题
- 第二十二章 5为你的命名空间取个别名
- No changes detected解决方案
- win7 ie临时文件夹怎么修改存放位置
- 早上起床后喝的第一杯水不要喝太多
- php加密解密函数,PHP加密解密的函数
- ajax请求几个状态,ajax的请求步骤!每个状态值表示什么?
- IDEA HTML 动态访问本地图片加载失败
- 生态环境影响评价技术应用及典型实践案例分析
- 赛尔号通信数据的逆向分析与还原(思路篇)
- html通过拼音首字母定位,javascript实现通过拼音首字母快速选择下拉列表
- 《尚书》全文、注释及译文(1)
- 坐标转换工具类:84坐标系,火星坐标系,与百度坐标系之间的互相转换
- 微信公众号开发-取得AccessToken
- 外贸常用术语_对外贸易常用的贸易术语有几种?分别是,,,
- FINN(三)BNN在FPGA上的准确性和峰值性能
热门文章
- Windows 下开发PHP扩展资源
- 查看ubuntu版本
- Oracle 11g 新特性 -- 自动诊断资料档案库(ADR) 说明
- C# 重写WndProc 消息循环
- c#中程序以管理员身份运行的三种办法
- C# 跨线程调用控件
- VC的MFC中重绘函数的使用总结(整理)
- C++中的“error:LNK2005 已经在*.obj中定义”异常
- Android—显示窗口调用相机与相册
- php返回mysql错误语句_[已解决]php查询mysql返回了错误的结果