首页 > 代码库 > ASP.NET MVC学习三-数据传递之模型绑定

ASP.NET MVC学习三-数据传递之模型绑定

一:简单的模型绑定

在ASP.NET MVC中是模型绑定来解析客户端传过来的数据的,简单的来说就更近一步来封装了获得数据的手段,让用户更方便的来获取数据了

我们来简单做一个例子

public ActionResult Index()        {            return View();        }        [HttpPost]        public ActionResult Index(string username)        {            ViewData["username"] = username;            return View();        }

这里我们定义了一个Action,[httpPost]限定Action只能被post请求访问,我们在其参数中定义一个名字username的字符串

view视图中的代码如下

@{    ViewBag.Title = "Index";}<form method="post">    <h1>简单模型绑定</h1>    姓名:<input type="text" name="username" id="username" />    <input type="submit" value=http://www.mamicode.com/"提交" /></form>@if (ViewData["username"] != null){    <h1>@ViewData["username"]</h1>}

这里注意模型绑定的name属性需要和view视图中的input标签工具name相同

image

 

二:使用FormCollection来进行模型绑定

在Asp.net中我们习惯了用request.Form来获取提交的表单的值,当然在MVC中我们可以很方便的获取其值

public ActionResult Index()        {            return View();        }        [HttpPost]        public ActionResult Index(FormCollection e)        {            ViewData["username"] = e["username"];            ViewData["Age"] = e["Age"];            return View();        }

在视图中代码为

<form method="post">    <h1>简单模型绑定</h1>    姓名:<input type="text" name="username" id="username" />    年龄:<input type="text" name="Age" id="Age" /><br />    <input type="submit" value=http://www.mamicode.com/"提交" /></form>@if (ViewData["username"] != null){    <label>姓名:</label><h1>@ViewData["username"]</h1>    <label>年龄:</label><h1>@ViewData["Age"]</h1>}

我们可以通过这种方法清晰的看到一样是能获取数据

image

 

三:模型绑定之传递对象

之前我们讨论的都是通过表单传递一些简单的值,现在如果要传递一个model对象能不能呢?我们先在Model层添加一个People得吧

public class People    {        public int Id { get; set; }        public string Name { get; set; }        public int Age { get; set; }    }

在Controller将代码修改

public ActionResult Index()        {            return View();        }        [HttpPost]        public ActionResult Index(People people)        {            ViewData["Id"] = people.Id;            ViewData["Name"] = people.Name;            ViewData["Age"] = people.Age;            return View();        }

此时我们将模型绑定为People类型

View中视图修改为

<form method="post">    Id:<input type="text" name="Id" id="Id" />    姓名:<input type="text" name="Name" id="Name" />    年龄:<input type="text" name="Age" id="Age" /><br />    <input type="submit" value=http://www.mamicode.com/"提交" /></form>@if (ViewData["Id"] != null){    <label>Id:</label><h1>@ViewData["Id"]</h1>    <label>姓名:</label><h1>@ViewData["Name"]</h1>    <label>年龄:</label><h1>@ViewData["Age"]</h1>}

当然这里我们将定义的Input标签的name属性与类people名字一样

image

 

到这里你可能又会觉得那能不能传递多个对象呢?

我们将Controller的代码改动一下

public ActionResult Index()        {            return View();        }        [HttpPost]        public ActionResult Index(People people1, People people2)        {            ViewData["Id1"] = people1.Id;            ViewData["Name1"] = people1.Name;            ViewData["Age1"] = people1.Age;            ViewData["Id2"] = people2.Id;            ViewData["Name2"] = people2.Name;            ViewData["Age2"] = people2.Age;            return View();        }
<form method="post">    Id1:<input type="text" name="people1.Id" id="people1.Id" />    姓名1:<input type="text" name="people1.Name" id="people1.Name" />    年龄1:<input type="text" name="people1.Age" id="people1.Age" /><br />     Id2:<input type="text" name="people2.Id" id="people2.Id" />    姓名2:<input type="text" name="people2.Name" id="people2.Name" />    年龄2:<input type="text" name="people2.Age" id="people2.Age" /><br />    <input type="submit" value=http://www.mamicode.com/"提交" /></form>@if (ViewData["Id1"] != null){    <label>Id1:</label><h1>@ViewData["Id1"]</h1>    <label>姓名1:</label><h1>@ViewData["Name1"]</h1>    <label>年龄1:</label><h1>@ViewData["Age1"]</h1>          <label>Id2:</label><h1>@ViewData["Id2"]</h1>    <label>姓名2:</label><h1>@ViewData["Name2"]</h1>    <label>年龄2:</label><h1>@ViewData["Age2"]</h1>}

注意:View视图我们必须将标签的name属性设置和模型绑定名字一样

ASP.NET MVC学习三-数据传递之模型绑定