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

时间: 2024-10-12 11:02:43

ASP.NET MVC学习三-数据传递之模型绑定的相关文章

ASP.NET MVC 5 - 将数据从控制器传递给视图

原文:ASP.NET MVC 5 - 将数据从控制器传递给视图 在我们讨论数据库和数据模型之前,让我们先讨论一下如何将数据从控制器传递给视图.控制器类将响应请求来的URL.控制器类是给您写代码来处理传入请求的地方,并从数据库中检索数据,并最终决定什么类型的返回结果会发送回浏览器.视图模板可以被控制器用来产生格式化过的HTML从而返回给浏览器. 控制器负责给任何数据或者对象提供一个必需的视图模板,用这个视图模板来Render返回给浏览器的HTML.最佳做法是:一个视图模板应该永远不会执行业务逻辑或

ASP.NET MVC学习系列(二)-WebAPI请求

继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax({type:"get"}) 来实现: 请求的后台Action方法仍为上篇文章中的GetU

ASP.NET MVC 学习

ASP.NET MVC 学习 一. 学习MVC基础 MVC的三个字母分别代表什么意思? M—Model(模型).V—View(视图).C—Controller(控制器) VS2010 中建立MVC应用程序会自动生成哪些文件夹? Controllers – 放置Controller 类,处理URL 请求. Models – 放置业务实体类,表示和操作数据. Views – 放置UI 模板文件,负责展示输出结果. Scripts – 放置Javascript 类库文件和.js 文件. Content

ASP.NET MVC学习系列(二)-WebAPI请求(转)

转自:http://www.cnblogs.com/babycool/p/3922738.html 继续接着上文 ASP.NET MVC学习系列(一)-WebAPI初探 来看看对于一般前台页面发起的get和post请求,我们在Web API中要如何来处理. 这里我使用Jquery 来发起异步请求实现数据调用. 继续使用上一文章中的示例,添加一个index.html页面,添加对jquery的引用. 一.无参数Get请求 一般的get请求我们可以使用jquery提供的$.get() 或者$.ajax

ASP.NET MVC 学习第二天

今天使用mvc完成简单的增删改,内容比较简单,来熟悉一下mvc,数据库操作是用前面的ef,也算是温习一下ef吧. 新建mvc项目,在项目中的Models内添加ef,我这里只操作一下简单的user表.里面有id,name,sex,age字段.完成后如下 在Controller中添加user控制器,添加增删改查方法,下面是我在user控制器中添加的方法 1 using System; 2 using System.Collections.Generic; 3 using System.Data.En

ASP.NET MVC学习之控制器篇

一.前言 许久之后终于可以继续我的ASP.NET MVC连载了,之前我们全面的讲述了路由相关的知识,下面我们将开始控制器和动作的讲解. ASP.NET MVC学习之路由篇幅(1) ASP.NET MVC学习之路由篇幅(2) ASP.NET MVC学习之路由篇幅(3) 二.正文 1.IController的使用 这个接口可能很多人都没有使用过,但是我们常用的Controller类实现了这个接口,而且只要实现这个接口就可以作为一个控制器,当然很多的内部的处理就要我们自己去做了. 下面我利用ICont

ASP.NET MVC学习之模型验证篇

一.学习前的一句话 在这里要先感谢那些能够点开我随笔的博友们.慢慢的已经在博客园中度过一年半了,伊始只是将博客园作为自己学习的记录本一样使用,也不敢将自己的随笔发表到博客园首页,生怕自己的技艺不高,反倒成了笑话.但是随着时间的推移,再也按捺不住这种想法,于是就写了一篇随笔发表到博客园首页.让我意想不到的是有许多人都看了,而且也留下了评论.这让我鼓起勇气写了第二.三.四篇.到现在的连载,这里我希望那些从未发表过随笔的人可以尝试去发表,在这里他人不会嘲讽你,而是会给你更好的建议.说了这么多下面我们继

ASP.NET MVC学习之路由篇(1)

原文:ASP.NET MVC学习之路由篇(1) 一.前言 作为一个从ASP.NET转入到ASP.NET MVC的开发人员而言,可能在开发ASP.NET网站的时候就已经开始在使用路由了. 只不过在ASP.NET MVC中路由是关键部分,而在ASP.NET中需要自行加进去.下面我们将学习ASP.NET MVC中的路由 系统. 二.准备工作 1.新建一个ASP.NET MVC4项目 2.模板选择空 3.在Controllers中添加一个Home控制器 4.打开App_Start中的RouteConfi

ASP.NET MVC学习之控制器篇扩展性

原文:ASP.NET MVC学习之控制器篇扩展性 一.前言 在之前的一篇随笔中已经讲述过控制器,而今天的随笔是作为之前的扩展. 二.正文 1.自定义动作方法 相信大家在开发过程一定会遇到动作方法的重名问题,虽然方法的名称和参数一样,但是里面的逻辑是不一样的,因为你设置了对应的注解属性可以确定调用哪个动作方法.这个时候你就需要将动作的名称与方法的名称区别开来,那么你就可以使用ActionName注解属性.比如我们要求一个页面在本地访问与非本地访问时呈现不同的页面,但是你又想用不同的方法区分开来写,