上几篇博文提到MVC和WebForm的区别,主要是MVC的Controller和View将传统的WebForm的窗体和后台代码做了解耦,这篇博文简单介绍一下在MVC中Controller向View是如何传值的。

有点MVC基础的都知道,Controller向View传值主要有四种途径,下面将一一介绍。

1)ViewBag

 

ViewBag是动态类型,使用时直接添加属性赋值即可 ViewBag.myName

控制器代码:

  1. public ActionResult Index()
  2. {
  3. ViewBag.name = "周江霄";
  4. ViewBag.message = "欢迎使用MVC设计模式~~";
  5. return View();
  6. }

视图代码:

  1. <div>
  2. <!--利用HtmlHelper创建TextBox时,使用名称与ViewBag中的Key一致, 就会自动实现值绑定-->
  3. @Html.TextBox("name")
  4. @ViewBag.message
  5. </div>

效果显示:

 2)ViewData

ViewData只对当前Action有效,它是一个字典集合,通过key值读取对应的value;

控制器代码:

  1. public ActionResult Index()
  2. {
  3. ViewData["name"] = "周江霄";
  4. ViewData["message"] = "欢迎使用MVC设计模式~~";
  5. return View();
  6. }

视图代码:

  1. <div>
  2. <!--利用HtmlHelper创建TextBox时,使用名称与ViewData中的Key一致, 就会自动实现值绑定-->
  3. @Html.TextBox("name")
  4. @ViewData["message"]
  5. </div>

效果显示:

3)TempData

使用TempData和使用ViewData方法是一样的,但是它可用于在不同的Action之间传值,这是ViewData做不到的。

控制器代码:

  1. public class MVCController : Controller
  2. {
  3. public ActionResult Index1()
  4. {
  5. TempData["name"] = "周江霄";
  6. return View();
  7. }
  8. public ActionResult Index2()
  9. {
  10. string strName = TempData["name"].ToString()
  11. return View();
  12. }

上面的代码中,Index()给TempData添加了一个键值对,假设我们先请求Index这个Action,接着请求Index2这个Action,那么在Index2中,我们便可以得到之前添加到TempData的键值对。有趣的是,这时如果再次请求Index2,那么从TempData中读到的MyName的值会是null。这是因为TempData和一个临时的Session差不多,当Acion执行的时候它做为一个全局对象保存的内存中,而一旦Action的执行完成,就会释放内存空间,这就是它与ViewData最大的不同之处。

4)Model

Controller通过Model传值应该是MVC中使用最为普遍的一种传值方式,通过强类型绑定,在View中可以很方便的通过Model的相应属性得到想要的值。

Model代码:

  1. public partial class YzAdministratorEntity
  2. {
  3. public YzAdministratorEntity()
  4. {
  5. this.YzClearRecordEntity = new HashSet<YzClearRecordEntity>();
  6. this.YzNotifyInfoEntity = new HashSet<YzNotifyInfoEntity>();
  7. }
  8. public System.Guid ID { get; set; }
  9. public string AdminPassword { get; set; }
  10. public string AdminName { get; set; }
  11. public bool isUsed { get; set; }
  12. [Required(AllowEmptyStrings = false, ErrorMessage = "用户ID不能为空")]
  13. public string AdministratorID { get; set; }
  14. public string AdminLevel { get; set; }
  15. public virtual ICollection<YzClearRecordEntity> YzClearRecordEntity { get; set; }
  16. public virtual ICollection<YzNotifyInfoEntity> YzNotifyInfoEntity { get; set; }
  17. }

视图代码:

强类型绑定:

  1. @model Model.YzAdministratorEntity

通过Linq自动匹配Model和Label或TxtBox的属性值:

    1. <div>
    2. <span class="editor-label">
    3. @Html.Label("编号:")
    4. </span>
    5. <span class="editor-field">
    6. @Html.EditorFor(a => a.AdministratorID)
    7. @Html.ValidationMessageFor(model => model.AdministratorID)
    8. </span>
    9. </div>
    10. <div>
    11. <span class="editor-label">
    12. @Html.Label("密码:")
    13. </span>
    14. <span class="editor-field">
    15. @Html.EditorFor(a => a.AdminPassword )
    16. </span>
    17. </div>
    18. <div>
    19. <span class="editor-label">
    20. @Html.Label("真实姓名:")
    21. </span>
    22. <span class="editor-field">
    23. @Html.EditorFor(a => a.AdminName )
    24. </span>
    25. </div>

ASP.NET MVC Controller向View传值的几种方式的更多相关文章

  1. ASP.NET MVC Controller向View传值方式总结

    Controller向View传值方式总结 总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是: ViewBag ViewData TempData 向普通Vie ...

  2. MVC教程四:Controller向View传值的几种方式

    一.通过ViewData传值 MVC从开始版本就一直支持使用ViewData将Controller里面的数据传递到View.ViewData定义如下: 从上面的截图中可以看出,ViewData里面存的 ...

  3. ASP.NET MVC 控制器向View传值的三种方法

    转自:http://www.cnblogs.com/shinima/p/3940452.html 1.提供视图模型对象 你能把一个对象作为View方法的参数传递给视图. public ViewResu ...

  4. 第三节:Action向View传值的四种方式(ViewData、ViewBag、TempData、Model)

    简  介 在前面的章节中,我们已经很清楚,MVC工作模型的流程,Controller中的Action接收到客户端的请求,处理后要将数据返回给View,那么Action中是如何将数据返回给View的,二 ...

  5. MVC中控制器向视图传值的四种方式

    MVC中的控制器向视图传值有四种方式分别是 1 ViewDate  2.ViewBag   3.TempDate  4.Model 下面分别介绍四种传值方式 首先先显示出控制器中的代码 using S ...

  6. MVC Controller向View传值(ViewData与ViewBag)

    近期在开发项目中,使用的是ASP.NET MVC因为之前并没有接触,对于它的传值方式有些陌生,在这里进行初步总结积累学习. 一:使用 ViewData使用: public ActionResult I ...

  7. MVC Controller 与 View 传值

    Controller 到 View 1 强类型 控制器 // GET: /Test/ public ActionResult Index() { DateTime date = DateTime.No ...

  8. ASP.NET MVC post请求接收参数的三种方式

    1.在控制器中建立一个PostDemo方法,建立视图创建一个表单 <h2>PostDemo</h2> name的值:@ViewBag.name <br /> nam ...

  9. Asp.Net MVC Control向View传值

     1.通过View(Parameter)参数传值     Control: namespace MyMVCDemo.Controllers { public class PersonControlle ...

随机推荐

  1. Hadoop Datanode 机器缺失 VD 问题修复尝试

    背景: 新集群 Datanode 使用两个 SSD 做 raid 1 作为根磁盘,12 个 SAS 单独做 raid 0 作为数据盘,在机器部署完毕后,缺发现 PD slot 4 和 slot 5 丢 ...

  2. HTML5入门总结 HTML5API

    w3cshools  MDN英文  MDN中文 HTML5 HTML5 is the latest evolution of the standard that defines HTML. The t ...

  3. 【.NET】XML文件的创建,修改,删除

    类名:XML /// 1.创建XML文档 /// 2.在根节点下增加子元素 /// 3.在元素下增加子元素 /// 4.获取类型为制定值的一组节点 /// 5.抓取网页上的xml文档赋值给XmlDoc ...

  4. python学习day2

    一.模块初识 python模块 模块让你能够有逻辑地组织你的Python代码段. 把相关的代码分配到一个 模块里能让你的代码更好用,更易懂. 模块也是Python对象,具有随机的名字属性用来绑定或引用 ...

  5. 计算机网络课程优秀备考PPT之第四章介质访问控制层(四)

    为了记录自己从2016.9~2017.1的<计算机网络>助教生涯,也为了及时梳理和整写笔记! 前期博客是, 计算机网络课程优秀备考PPT之第一章概述(一) 计算机网络课程优秀备考PPT之第 ...

  6. MVC运行机制

    一,第一次程序运行时 1,第一次请求的时候 会获取配置文件,然后有个应用启动事件到global.asax.2,在Global.asax文件中,网站第一次运行会创建RouteTable对象,实现URL到 ...

  7. 关于JavaScript的小笔记

    1.当 JavaScript 中的变量被声明的时候,程序内部会给它一个初始值 undefined.当你对一个值为 undefined 的变量进行运算操作的时候,算出来的结果将会是 NaN,NaN 的意 ...

  8. javascript获取css中的样式值

    <body> <input type="button" id="btn" value="启动"/> <img ...

  9. createElement创建

    定义和用法 createElement() 方法可创建元素节点. 此方法可返回一个 Element 对象. <script type="text/javascript"> ...

  10. 把json数据 [ { } ] 转为数组

    $str = '[{"rwx_price":388.5,"end_station_name":"长沙","swz_price&qu ...