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我们很容易分离成类库, ...
随机推荐
- RDLC使用手册_RDLC报表部署
原文:http://blog.csdn.net/lwjnumber/article/details/6590545 9. RDLC报表部署(限于rdlc报表 windows应用程序) 1) R ...
- iOS -数据库网络之xml解析之第三方解析XML
1.导入第三方插件(GDalaXMLNode) 2.第三方插件配置 libxml/tree.h 路径 在项目属性中--Bulid Settings中搜索 Search --Search ...
- WP老杨解迷:开发生态两极化和榜单乱象
Windows Phone 自2013年的一片浪潮推动下,2014年终于开始引起了各大小CP们的注意,于是大量的产品开始乘风破浪一路涌进Windows Phone平台,立即改变了榜单的格局,如今,苦B ...
- 在线运行Javascript,Jquery,HTML,CSS代码
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" http://www.w3.org/TR/xht ...
- [转]仿World Wind构造自己的C#版插件框架——WW插件机制精简改造
很久没自己写东西啦,早该好好总结一下啦!一个大师说过“一个问题不应该被解决两次!”,除了一个好脑筋,再就是要坚持总结. 最近需要搞个系统的插件式框架,我参照World Wind的插件方式构建了个插件框 ...
- Androd Studio layout页面布局无法预览
Could not initialize class android.support.v7.internal.widget.ActionBarOverlayLayout 导致无法看到布局页面,解决方法 ...
- Activiti系列:为什么Activiti 5.18 的REST的api总是返回404错误
REST api可以访问了,如下 1.修改db.properties配置文件,让他访问sql server 2.在浏览器中输入如下地址,注意中间有一个service,这点和之前的不一样,在<Ac ...
- 如何下载Spring
一. 各个spring版本的下载地址: http://repo.spring.io/release/org/springframework/spring 二. Spring官网: http://spr ...
- 20145222黄亚奇《Java程序设计》第3周学习总结
学号 <Java程序设计>第X周学习总结 教材学习内容总结 第四章: 类是对象的设计图,对象是类的实例. 参考名称与对象数据成员同名时,可以在数据成员前使用this区别. =是用在指定参考 ...
- 疯狂的Java算法——插入排序,归并排序以及并行归并排序
从古至今的难题 在IT届有一道百算不厌其烦的题,俗称排序.不管是你参加BAT等高端笔试,亦或是藏匿于街头小巷的草根笔试,都会经常见到这样一道百年难得一解的问题. 今天LZ有幸与各位分享一下算法届的草根 ...