一:简单的模型绑定
在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="提交" /> </form> @if (ViewData["username"] != null) { <h1>@ViewData["username"]</h1> }
这里注意模型绑定的name属性需要和view视图中的input标签工具name相同
二:使用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="提交" /> </form> @if (ViewData["username"] != null) { <label>姓名:</label><h1>@ViewData["username"]</h1> <label>年龄:</label><h1>@ViewData["Age"]</h1> }
我们可以通过这种方法清晰的看到一样是能获取数据
三:模型绑定之传递对象
之前我们讨论的都是通过表单传递一些简单的值,现在如果要传递一个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="提交" /> </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名字一样
到这里你可能又会觉得那能不能传递多个对象呢?
我们将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="提交" /> </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属性设置和模型绑定名字一样
时间: 2024-10-12 11:02:43