转: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的更多相关文章
- 爱上MVC3系列~Html.BeginForm与Ajax.BeginForm
Html.BeginForm与Ajax.BeginForm都是MVC架构中的表单元素,它们从字面上可以看到区别,即Html.BeginForm是普通的表单提交,而Ajax.BeginForm是支持异步 ...
- MVC3系列~Html.BeginForm与Ajax.BeginForm
Html.BeginForm与Ajax.BeginForm都是MVC架构中的表单元素,它们从字面上可以看到区别,即Html.BeginForm是普通的表单提交,而Ajax.BeginForm是支持异步 ...
- Html.BeginForm() vs Ajax.BeginForm() in MVC3
我们知道,BeginForm()方法能创建一个Form标签,因此可以结合表单级的方法,在这个页面中.我一直在考虑Html.BeginForm()方法和Ajax.BeginForm()方法在MVC3中有 ...
- MVC小系列(十一)【Html.BeginForm与Ajax.BeginForm】
Html.BeginForm与Ajax.BeginForm都是mvc的表单元素,前者是普通的表单提交,而后者是支持异步的表单提交,直接用mvc自带的Ajax.BeginForm就可以很容易完成一个异步 ...
- Html.BeginForm())与Ajax.BeginForm()
一.@using (Html.BeginForm())参数示例 1.指定表单提交方式和路径等 @using (Html.BeginForm("Index", "Home ...
- MVC Html.BeginForm 与 Ajax.BeginForm 使用总结
最近采用一边工作一边学习的方式使用MVC5+EF6做一个Demo项目, 期间遇到不少问题, 一直处于研究状态, 没能来得及记录. 今天项目进度告一段落, 得以有空记录学习中遇到的一些问题. 由于MVC ...
- form表单和ajax表单提交(Html.BeginForm()、Ajax.BeginForm())的差别
有如下几种区别: 1. Ajax在提交.请求.接收时,都是异步进行的,网页不需要刷新: Form提交则是新建一个页面,哪怕是提交给自己本身的页面,也是需要刷新的: 2. A在提交时,是在后台新建一个请 ...
- @using (Html.BeginForm()) @using (Ajax.BeginForm(new AjaxOptions() { })) 区别
@using (Html.BeginForm()) 返回页面 也是页面 都是返回页面 只是 多了一个 data-ajax="true"
- 【转】利用Ajax.BeginForm提交文件
Ajax.BeginForm @using (Ajax.BeginForm("YourAction", "YourController", new AjaxOp ...
随机推荐
- angular入门系列教程3
主题: 本篇主要目的就是继续完善home页,增加tab导航的三个页index index1 index2 效果图: 细节: 初始化的JS就是咱们的home.js,仔细来看. angular的route ...
- UVA 1175 Ladies' Choice 稳定婚姻问题
题目链接: 题目 Ladies' Choice Time Limit: 6000MS Memory Limit: Unknown 64bit IO Format: %lld & %llu 问题 ...
- 【转载】hadoop的版本问题
免责声明: 本文转自网络文章,转载此文章仅为个人收藏,分享知识,如有侵权,请联系博主进行删除. 原文作者:阿笨猫 原文地址:http://www.cnblogs.com/xu ...
- 【BZOJ】【1324】王者之剑
网络流/二分图最大点权独立集 Amber(胡伯涛)论文<最小割模型在信息学竞赛中的应用>中的例题…… 感觉这个好神啊,果然是一切皆为网络流……这转化太神奇了 /************** ...
- 【BZOJ】【1662】/【POJ】【3252】 【USACO 2006 Nov】Round Number
数位DP 同上一题Windy数 预处理求个组合数 然后同样的方法,这次是记录一下0和1的个数然后搞搞 Orz cxlove /************************************* ...
- 修改npm包管理器的registry为淘宝镜像(npm.taobao.org)
起因 安装了node,安装了npm之后,官方的源实在是 太慢了! 看了看淘宝的npm镜像, http://npm.taobao.org/ 竟然说让我再下载一个cnpm,要不然就每次都得install ...
- 140304笔记, mysql 更改自动增长字段值的重新设定
1. 存在同名的或不同的namespace交错情况. Caused by: com.ibatis.sqlmap.client.SqlMapException: There is no result m ...
- hdu 3923 Invoker
完全是套用polya模版…… ;}
- Highcharts中初始化最大值与最小值的柱状图
<!doctype html> <html lang="en"> <head> <script type="text/javas ...
- 李洪强漫谈iOS开发[C语言-040]-switch case
李洪强漫谈iOS开发[C语言-039]-switch case 补充: