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传递到控制器中的三种方法(表单数据绑定)的更多相关文章

  1. ASP.NET MVC 中将数据从View传递到控制器中的表单提交法

    本方法以搜索功能为例,在view中输入要搜索的关键字,提交到相应controller中进行处理. view中代码: <div class="searchBox"> @u ...

  2. ASP.NET MVC中将数据从Controller传递到视图

    ASP.NET MVC中将数据从Controller传递到视图方法 1.ViewData ViewData的类型是字典数据,key-value 如:ViewData["Data"] ...

  3. ASP.NET动态加载Js代码到Head标签中(三种方法)

    方法一代码如下: HtmlGenericControl Include2 = new HtmlGenericControl("script"); Include2.Attribut ...

  4. 《ASP.NET MVC高级编程(4版)》读书笔记(5)表单和HTML辅助方法

    5.1 表单使用 5.1.1 action 和 method 特性 <form action="/Home/Index">     <input name=&qu ...

  5. Excel 将A表的基础数据拼接到B表中来-三种方法: ctrl+回车, VLOOKUP()函数,宏

    A表  基础信息表 B表 业务信息表 将a表中的基础数据 拼接到B表的后面, 应用场景是: B表很多数据,很繁乱,名字不一定全, A表也是比较多的行,B表乱:比如有8行有李晨的,却只有3行是范仲淹的, ...

  6. 体温数据上传程序开发+获取时间的三种方法+DB Browser下载及安装

    今天开始了体温上传程序的开发 今日所学: 获取时间 (21条消息) (转)安卓获取时间的三种方法_sharpeha的博客-CSDN博客_安卓获取时间 DB Browser安装教程 (20条消息) sq ...

  7. MVC异步AJAX的三种方法(JQuery的Get方法、JQuery的Post方法和微软自带的异步方法)

    异步是我们在网站开发过程中必不可少的方法,MVC框架的异步方法也有很多,这里介绍三种方法: 一.JQuery的Get方法 view @{ Layout = null; } <!DOCTYPE h ...

  8. 总结ASP.NET MVC视图页使用jQuery传递异步数据的几种方式

    在ASP.NET MVC的视图页向控制器传递异步数据,可能是数组,JavaScript对象,json,表单数据,等等. 关于数据,JavaScript对象有时候和json长得一模一样,有么有? var ...

  9. ASP.NET MVC中将控制器分离到类库的实现

    前言 在ASP.NET MVC的开发中,我们创建完项目之后,ASP.NET MVC是已Model-Controller-View的形式存在的,在创建项目自动生成的内容上Model我们很容易分离成类库, ...

随机推荐

  1. delphi数组作为参数传值

    在函数中如果数组的个数不定,可以使用开放数组参数 实参可以接受静态数组和动态数组 procedure p1(a:array of Byte); begin ShowMessage( IntToHex( ...

  2. cisco交换技术list

  3. 嵌入式Linux应用开发——Linux下的C编程基础

    一.markdown简单操作 1.标题 在文字开头加上 “#”,通过“#”数量表示几级标题. 通过在文字下方添加“=”和“-”,他们分别表示一级标题和二级标题. 2.块注释 通过在文字开头添加“> ...

  4. Linux 基础入门

    实验一(Linux 系统简介): 了解了一些有关Linux的重要人物,以及 实验二(基本概念及操作): Linux终端 1.Terminal(终端):当你切换到其中一个终端后想要切换回图形界面,你可以 ...

  5. 郝文菲get技能的经验--20155308

    郝文菲get技能的经验--20155308 比其他人更好的技能 谈到自己的特长,作为新一代成长的自己来说,有一箩筐的话可以说.但是若是谈到自己比大多数人更好的技能,我却觉得回答这个问题有很大的难度.当 ...

  6. 三种实例化委托的方式(C# 编程指南)

    1.定义的委托和方法 delegate void TestDelegate(string s); static void M(string s) { Console.WriteLine(s); } 2 ...

  7. MVC5 + EF6 + Bootstrap3 (14) 分部视图PartialView

    Slark.NET-博客园 http://www.cnblogs.com/slark/p/mvc5-ef6-bs3-get-started-partialview.html 系列教程:MVC5 + E ...

  8. Android开发之高效加载Bitmap

    一.概述 在Android开发中,我们经常与Bitmap打交道,而对Bitmap的不恰当的操作经常会导致OOM(Out of Memory).这篇文章我们会介绍如何高效地在Android开发中使用Bi ...

  9. Android Support Annotations :安卓注解快速上手

    我们都知道,安卓资源文件都是int类型的ID来保存其引用,通过注解类型,可以让我们在写代码的时候,及时发现参数类型的错误,避免潜在的BUG,如下: 我们通过@LayoutRes指定了参数必须要是R.l ...

  10. [poj1742]coin

    题意:多重背包的w=v特殊情况 分析:此题如果用单调队列O(nv)会被无耻卡常数…… 然后鉴于此题W=V,所以只存在背包恰好为i的是否存在,即bool型的f[i]是否为1 即往背包染色上面考虑 如果是 ...