ASP.NET MVC中,Controller向View传递数据的方式有一下6种
- ViewData
- ViewBag
- PartialView
- TempData
- ViewModel
- Tuple
1、ViewData和ViewBag
ViewData使用键值对Key/Value存储对象,ViewBag通过动态类型dynamic存放对象
ViewData在View中使用的时候要转换为相应类型,而ViewBag可以作为属性直接使用(但没有智能提示)
ViewData的存取效率比ViewBag快
ViewData["key1"] = "value1";
ViewData["key2"] = 15;
ViewBag.Key1 = "value1";
ViewBag.Key2 = 15;
2、Tuple和ViewModel
Tuple就是ViewModel,用来存放多个元素的集合(做多可以存放7个元素),然后通过Model传递到View,在View中设置强类型视图,就可以通过@Model来访问
var tuple = new Tuple<string, string>("value1", "value2");
return View(tuple);
在View页面中添加model的定义
@model Tuple<string, string>
3、PartialView
通过PartialView包装一些重用代码,可以在需要的时候直接调用,也可以用于异步请求时作为html返回
可以在View中直接调用 @Html.RenderPartial("_PartialView");
也可以用于异步请求是返回部分html代码
4、TempData
TempData和ViewData一样,也是用键值对Key/Value存储,但数据保存在Session,每一次读取后会删除数据,支持跨Action访问
如果读取后不想删除,可以调用TempData.Peek("Key")
如果读取后保存一次,可以调用TempData.Keep("Key")