ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)

转载 2014年12月29日 21:41:01

在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.结果如下:

FormCollection

  

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.
程序的运行结果如下:

直接读取

 

直接读取表对象时,发送表单的文本框必须与数据对象属性的名称相一致(不区分大小写)

Technorati 标签: MVC,表单数据绑定

ASP.NET MVC 显示数据库表中的数据

显示数据库表中的数据在本教程中,作者介绍了两种显示数据库记录集的方法。展示了两种在 HTML 表中格式化一组数据库记录的方法。首先,介绍了如何直接在视图中格式化数据库记录。接着,介绍了格式化数据库记录...
  • deng_zz
  • deng_zz
  • 2010年01月22日 10:20
  • 18387

MVC控件绑定数据

下拉列表、select绑定 数据访问层 public object GetListBatch() { return db_C56.Traces.Select(p => p.BatchID)....
  • KingCruel
  • KingCruel
  • 2013年11月15日 10:23
  • 4929

SpringMVC强大的数据绑定—注解式控制器详解

6.6.2、@RequestParam绑定单个请求参数值 @RequestParam用于将请求参数区数据映射到功能处理方法的参数上。 Java代码   public String...
  • qq_34120041
  • qq_34120041
  • 2017年01月06日 17:23
  • 895

ASP.NET MVC 八 DropDownList数据绑定

一、在MVC中基本上不再使用.net提供的控件,而使用HTML辅助方法。所以一些我们之前常用的数据绑定控件与现在的用法就大不相同,下面就先介绍几种我们常会用到的数据绑定控件。      1、下拉列表框...
  • yh_bxhl
  • yh_bxhl
  • 2010年12月30日 16:28
  • 11112

浅谈 SpringMVC 数据绑定

查看spring源码可以看出spring支持转换的数据类型:org.springframework.beans.PropertyEditorRegistrySupport: /** * Actu...
  • senton
  • senton
  • 2011年03月28日 13:00
  • 12925

MVC 框架-Model Binding(模型绑定)批量修改增加记录

Model Binding(模型绑定)是 MVC 框架根据 HTTP 请求数据创建 .NET 对象的一个过程。我们之前所有示例中传递给 Action 方法参数的对象都是在 Model Binding ...
  • E_eric
  • E_eric
  • 2014年08月23日 19:54
  • 5965

MVC学习笔记六:模型绑定【上】

模型绑定 这一章主要记录一下MVC模型绑定 一.认识模型绑定 官方的详细介绍模型绑定的资料我没找到,只是在MSDN上讲DefaultModelBinder 类时介绍了一下:将浏览器请求映射到数据...
  • sudazf
  • sudazf
  • 2013年11月23日 01:19
  • 2549

springMVC4(8)模型数据绑定全面分析

使用@ModelAttribute、Model、Map、@SessionAttributes能便捷地将我们的业务数据封装到模型里并交由视图解析调用。下面开始一一分析在方法入参上使用@ModelAttr...
  • qwe6112071
  • qwe6112071
  • 2016年04月03日 10:02
  • 3697

ASP.NET MVC 表单提交数组和泛型集合的方法

ASP.NET MVC 表单提交数组和泛型集合的方法 2014-06-27 十有三 0 浏览:4187 .NET技术 ASP.NET MVC 在ASP.NET MVC的网站项...
  • u010690818
  • u010690818
  • 2017年03月22日 09:15
  • 1821

ASP.NET MVC中从后台控制器(Controller)传递数据到前台页面视图(View)方式

方式一: 数据存储模型Model: public class CalendarEvent { public string id { get; set; } ...
  • u012688910
  • u012688910
  • 2014年12月01日 16:31
  • 2064
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)
举报原因:
原因补充:

(最多只允许输入30个字)