ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)
http://www.cnblogs.com/zyqgold/archive/2010/11/22/1884779.html
在ASP.NET MVC框架中,将视图中的数据传递到控制器中,主要通过发送表单实现的.具体使用中,主要使用以下三种方法.
1、通过Request.Form读取表单数据 2、通过FormCollection读取表单数据 3、直接读取表单数据对象
下边是我学习这些东西时的一点总结
1、通过Request.Form读取表单数据
首先定义一个Person类如下:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
在HomeController中定义如下方法,用于接收View传来的数据:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult RequestForm()
{
Person person = new Person();
person.FirstName = Request.Form["FirstName"];
person.LastName = Request.Form["LastName"];
return View(person);
}
这个方法通过Request.Form分别读取View传来的两个文本框"FirstName"和"LastName"中的数据,然后得到Person类实例化对象person.
这些数据是HomeView传来的.实现表单的代码如下:
<fieldset>
<p>
<%using (Html.BeginForm("RequestForm", "Home"))
{%>
FirstName:<%=Html.TextBox("FirstName")%><br />
LastName:<%=Html.TextBox("LastName")%>
<input type="submit" name="提交" value="RequestForm" /><br />
<%} %>
</p>
</fieldset>
其中:Html.BeginForm("RequestForm", "Home")是MVC中的FormExtensions类中的扩展方法.第一个参数指明接收表单的Action,第二个参数指明接受表单的Controller.
这条语句指明了Home Controller中的Action RequestForm接受了刚才传递来的数据.发送的表单数据两个文本框:"FirstName"和"LastName"
点击提交按钮Submit后的结果如下:
可以看到,对象person成功接收了表单传来的数据.
2、通过FormCollection读取表单数据
ASP.NET MVC中的FormCollection对象是提交的Form中所有对象的集合.
为了通过FormCollection读取表单数据,设置如下表单:
<fieldset>
<p>
<%using (Html.BeginForm("FormCollection", "Home"))
{ %>
FirstName:<%=Html.TextBox("FirstName")%><br />
LastName:<%=Html.TextBox("LastName")%><br />
<input type="submit" name="Submit" value="FormCollection" /><br />
<%} %>
</p>
</fieldset>
(Writer的插入代码块功能突然就不能用了,郁闷中.....)
可以看出,处理表单的Action是HomeController中的FormCollection方法.发送的表单依然是来年改革文本框.
FormCollection方法的实现如下:
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult FormCollection(FormCollection formCollection)
{
Person person = new Person();
person.FirstName = formCollection["FirstName"];
person.LastName = formCollection["LastName"];
return View(person);
}
FormCollection类型是传入Form中窗体值的提供程序(MSDN里边这么说的,不是很理解).FormCollection()方法中传入了FormCollection类型的参数,该参数会自动绑定表单中的所有数据.
通过FormCollection可分别获取两个文本框中的数据,然后得到Person类的实例化对象person.结果如下:
![]()
3、直接读取表单数据对象
为直接读取表单对象,设置如下表单:
<fieldset>
<p>
<%using (Html.BeginForm("Person", "Home"))
{ %>
FirstName:<%=Html.TextBox("FirstName")%><br />
LastName:<%=Html.TextBox("LastName")%><br />
<input type="submit" name="Submit" value="Person" /><br />
<%} %>
</p>
</fieldset>
处理该表单的Action是HomeController中的Person方法.发送两个文本框中的数据.
Person() 的实现如下:
public class Person
{
public string FirstName { get; set; }
public string LastName { get; set; }
}
在上述代码中,Person()方法中传入了Person类型参数,其内部读取了两个文本框中的"FirstName"和"LastName"中的数据,直接得到Person类的实例化对象person.
程序的运行结果如下:
![]()
直接读取表对象时,发送表单的文本框必须与数据对象属性的名称相一致(不区分大小写)
ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)的更多相关文章
- ASP.NET MVC 中将数据从View传递到控制器中的表单提交法
本方法以搜索功能为例,在view中输入要搜索的关键字,提交到相应controller中进行处理. view中代码: <div class="searchBox"> @u ...
- ASP.NET MVC中将数据从Controller传递到视图
ASP.NET MVC中将数据从Controller传递到视图方法 1.ViewData ViewData的类型是字典数据,key-value 如:ViewData["Data"] ...
- ASP.NET动态加载Js代码到Head标签中(三种方法)
方法一代码如下: HtmlGenericControl Include2 = new HtmlGenericControl("script"); Include2.Attribut ...
- 《ASP.NET MVC高级编程(4版)》读书笔记(5)表单和HTML辅助方法
5.1 表单使用 5.1.1 action 和 method 特性 <form action="/Home/Index"> <input name=&qu ...
- Excel 将A表的基础数据拼接到B表中来-三种方法: ctrl+回车, VLOOKUP()函数,宏
A表 基础信息表 B表 业务信息表 将a表中的基础数据 拼接到B表的后面, 应用场景是: B表很多数据,很繁乱,名字不一定全, A表也是比较多的行,B表乱:比如有8行有李晨的,却只有3行是范仲淹的, ...
- 体温数据上传程序开发+获取时间的三种方法+DB Browser下载及安装
今天开始了体温上传程序的开发 今日所学: 获取时间 (21条消息) (转)安卓获取时间的三种方法_sharpeha的博客-CSDN博客_安卓获取时间 DB Browser安装教程 (20条消息) sq ...
- MVC异步AJAX的三种方法(JQuery的Get方法、JQuery的Post方法和微软自带的异步方法)
异步是我们在网站开发过程中必不可少的方法,MVC框架的异步方法也有很多,这里介绍三种方法: 一.JQuery的Get方法 view @{ Layout = null; } <!DOCTYPE h ...
- 总结ASP.NET MVC视图页使用jQuery传递异步数据的几种方式
在ASP.NET MVC的视图页向控制器传递异步数据,可能是数组,JavaScript对象,json,表单数据,等等. 关于数据,JavaScript对象有时候和json长得一模一样,有么有? var ...
- ASP.NET MVC中将控制器分离到类库的实现
前言 在ASP.NET MVC的开发中,我们创建完项目之后,ASP.NET MVC是已Model-Controller-View的形式存在的,在创建项目自动生成的内容上Model我们很容易分离成类库, ...
随机推荐
- Maven 的 HelloWorld
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://mave ...
- 混合语言编程:启用CLR(公共语言运行时编译)让C#调用C++
前言 关于混合C#和C++的编程方式,本人之前写过一篇博客(参见混合语言编程:C#使用原生的Directx和OpenGL),在之前的博客中,介绍了在C#的Winform和WPF下使用原生的Direct ...
- 双绞线线序+POE供电网线
0 重点 一般情况下会用1236(橙白.橙.绿白.绿)传输数据,1.2用于发送,3.6用于接收,45(蓝.蓝白)电源正极 78(棕白.棕)电源负极. 一 网线线序 12发 36收 二 poe网线供电 ...
- SRTM数据介绍与说明
一.SRTM 的背景引言 美国利用航天飞机搭载成像雷达对地进行观测始于20 世纪80 年代初.1982 年11 月和1985 年10 月, 美国分别进行了两次称为S IR2A 与S IR2B 的航天飞 ...
- 微信开放平台,微信登陆第三方网站 提示redirect_uri 参数错误
在微信开放平台上我填写的回调域是:bbs.qiaoshisui.com/LoginApi/WeiXinCallBack,我构造的链接是:https://open.weixin.qq.com/conne ...
- python 调用 shell 命令方法
python调用shell命令方法 1.os.system(cmd) 缺点:不能获取返回值 2.os.popen(cmd) 要得到命令的输出内容,只需再调用下read()或readlines()等 ...
- MANIFEST.INF!JAR规范中
MANIFEST.INF!JAR规范中 META-INF 目录中内容心得.顺带整理了网上资料,提供地址 标签: jarjava产品sunantapache 2012-03-31 17:09 2768人 ...
- 信息安全系统设计基础exp_4
北京电子科技学院(BESTI) 实 验 报 告 课程:信息安全系统设计基础 班级:1353 姓名:郑伟.吴子怡 学号:20135322.20135313 指导教师: 娄嘉鹏 实验 ...
- Jquery操作select,radio,input,p之类
select的操作 变化后触发操作 $("#txtaddprojecturl").change(function(){ $("#addprojectname") ...
- ccpc-1008-HDU5839Special Tetrahedron-计算几何
计算几何水题.暴力搞 注意力全部都在02那里,完全没想这道题! /*------------------------------------------------------------------ ...