控制器中:
public class ProductsController: Controller { public ActionResult index() { var categories = northwind.Categories.ToList(); return View(categories); } }
视图中:
你只需要在文件首部写上"@model强类型模型类"
获取或设置一个字典,其中包含在控制器和视图之间传递的数据。使用ViewData是采用键值对的形式,对所定义的数据进行传递。在View中会自动识别到拥有唯一键值的ViewData,并将数据显示出来。
定义
<span style="font-size:18px;">publicViewDataDictionary ViewData { get { if(_viewData == null) { SetViewData(newViewDataDictionary()); } return_viewData; } set { SetViewData(value); } }</span>
获取视图包,允许自定义属性进行赋值,属于动态类型(dynamic),以ViewBag.属性=属性值得方式进行传值,其实这里跟ViewData的使用原理类似。
定义
<span style="font-size:18px;">public dynamic ViewBag { get { if(_dynamicViewData == null) { _dynamicViewData= new DynamicViewDataDictionary(() => ViewData); } return_dynamicViewData; } }</span>
1、ViewData是字典类型,赋值方式用字典方式,通过key值读取对应的value,ViewData["myName"]
2、ViewBag是动态类型,使用时直接添加属性赋值即可ViewBag.myName
3、ViewBag和ViewData只在当前Action中有效,等同于View
4、ViewData和ViewBag中的值可以互相访问,因为ViewBag的实现中包含了ViewData
TempData默认是使用Session来存储临时数据的,TempData中存放的数据只一次访问中有效,一次访问完后就会删除了的。这个一次访问指的是一个请求到下一个请求,因为在下一个请求到来之后,会从Session中取出保存在里面的TempData数据并赋值给TempData,然后将数据从Session中删除。
<span style="font-size:18px;"> public ActionResult Index1() { this.TempData["Name"] = "cwl"; return View(); } public ActionResult Index2() { string name = this.TempData["Name"].ToString(); return View(); } </span>