博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)
阅读量:5090 次
发布时间:2019-06-13

本文共 2821 字,大约阅读时间需要 9 分钟。

转自: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传来的.实现表单的代码如下:

<%using (Html.BeginForm("RequestForm", "Home")) {%> FirstName:<%=Html.TextBox("FirstName")%>

LastName:<%=Html.TextBox("LastName")%>
<%} %>

其中: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.

程序的运行结果如下:

 

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

转载于:https://www.cnblogs.com/chengjun/p/5380471.html

你可能感兴趣的文章
c++入门之函数指针和函数对象
查看>>
JAVA编程之——反射Reflect
查看>>
一个数组中同时找到最大/最小值
查看>>
python终端下打印颜色
查看>>
《从Paxos到ZooKeeper 分布式一致性原理与实践》阅读【Leader选举】
查看>>
RPC框架基础概念理解以及使用初体验
查看>>
TF-IDF 学习
查看>>
Visual Studio 代码风格约束
查看>>
Jzoj3170 挑选玩具
查看>>
测试随想
查看>>
JavaWeb_客户端相对/绝对路径和服务器端路径
查看>>
数组中方法some,every , reduce简单方法
查看>>
Android中的onActivityResult和setResult方法的使用
查看>>
使用DD_belatedPNG让IE6支持PNG透明图片
查看>>
Redis-列表类型命令操作笔记
查看>>
ngx-echarts响应式图表
查看>>
用Maven部署war包到远程Tomcat服务器
查看>>
MVC 视频笔记
查看>>
[Cypress] Stub Network Requests in a Cypress Test
查看>>
3038 3n+1问题
查看>>