控制器和视图之间数据传值,比较常用的,除了Session,还有ViewData、ViewBag和TempData等,通常都是在控制器中写入值然后在视图中读取值
public ActionResult Index()
{
/*一:ViewData和ViewBag只能在对应的视图和控制器之间传值,比如这里只能在Index视图读取
* 在Second视图就读取不了
*二:TempData可以跨视图取值
*
*/
/*1:ViewData
* 字典集合数据,可以存放任意类型的数据,使用时强制类型转换
*2:ViewBag
* dynamic类型数据
*3:TempData
* 字典集合数据
*/
//注意写法
//在Index视图读取
ViewData["test"] = "testViewData";//测试ViewData的使用
ViewBag.data = "testViewBag";
//在Second视图读取(注意需要跳转到Second视图才可以)
TempData["test"] = "testTempData";
return View();
//return Redirect("Second");
}
然后在对应视图里(Razor的C#语法)这样写
@ViewData["test"]; @ViewBag.data; @ViewData["data"];<br />
@TempData["test"];
测试看一下
其实,ViewBag是对ViewData的包装,ViewData的数据可以用ViewBag读取,反之亦然,实际项目中选择其中的一种,推荐使用ViewBag。
现在将Index里的返回View改为Redirect(“Second”);
结果:
结果只有TempData才可以传值