您的位置:首页 > 编程语言 > ASP

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

2014-12-29 21:41 871 查看
ASP.NET MVC 中将数据从View传递到控制器中的三种方法(表单数据绑定)

在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.

程序的运行结果如下:




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

Technorati 标签: MVC,表单数据绑定
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐