总结发现ASP.NET MVC中Controller向View传值的方式共有6种,分别是:程序员
首先咱们须要明确的是咱们从controller向view传值的时候,这些方式分别处于什么样的地位:app
咱们通常会向页面传递一个主要的类型的数据,通常是状况下是一个List<Model>,若是只有这个,很好办,一个model对象就解决了,可是每每除此以外还会有一些额外的零散的数据须要传递,好比分页的pageIndex,或者pageCount等等,这样的数据用原有的model就无能为力了,这时候,咱们就能够用ViewBag、ViewData、TempData来传递这些额外的数据。spa
ViewBag、ViewData、TempData之间的差异:3d
ViewData与ViewBag之间很是类似,二者使用的场景基本一致,可是ViewData的类型是很明确的,使用的时候常常须要强制类型转换,而ViewBag的类型是动态的,不肯定的,直接就可使用,他们的传值范围是:controller向view传值,view本身和本身传值。而TempData存在的目的就是为了防止redirect时候数据的丢失,因此它的传值范围是当前controller和跳转后的controller之间。code
下面来详细的讲述他们的具体用法:orm
ViewBag 对象
咱们能够认为 ViewBag=ViewData+Dynamic wrapper around the ViewData ,接下来你就能够体会到这个公式的含义了。blog
一、conroller向view传值教程
二、view向view传值:ci
三、利用ViewBag传递一个对象:
ViewData
一、ViewData的基本用法
二、ViewData 转换成 ViewBag:
三、ViewBag 转换成 ViewData:
TempData
TempData用于在Redirect的时候保存数据,ViewData、ViewBag在跳转后就会变成null,可是TempData不会,下面是TempData的用法示例:
普通页面传递model:
向强类型试图传递model
一、WebForm Engine的试图的实现:
二、Razor Engine的实现:
程序员的基础教程:菜鸟程序员