ViewData
ViewData 对象大家应该比较了解了,它是一种字典集合数据,可存放任意类型,所以,使用时需要强制类转换。
ViewData 是“视图基类”和“控制器基类”的属性,所以,在控制器和视图中可以直接使用。我们通常是在控制器中写入数据,在视图中读取数据。
ViewBag
ViewBag 对象是 dynamic 类型的对象,同样也是“视图基类”和“控制器基类”的属性。使用更灵活方便。
特点:ViewBag 其实是对 ViewData 数据的包装,使用 ViewData 保存的数据可使用 ViewBag 读取,反之亦然。实际开发中最好选择其中的一种使用,建议使用 ViewBag。具体使用如下:
跨请求数据传递 TempData
TempData 是一种字典对象,也能用于从“控制器到视图”的数据传递,和 ViewData 类似。
TempData 还能实现“不同请求之间”的数据传递。使用如下:
注意的问题:TempData 数据保存机制是 Session,但又不完全同 Session。
情况 1:TempData 保存数据后,如果被使用,就会被清除,因此后面的请求将不能再次使用。
情况 2: TempData 保存数据后,如果没有被使用,则它保存的时间是 Session 的生存期。
控制器和视图数据传递总结