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="提交" />
</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属性设置和模型绑定名字一样

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。