数据传递
ViewData对象
- ViewData是一种字典集合数据,是“视图基类”和“控制器基类”的属性
- 常见的用法是在控制器中写入数据,在视图中读取数据
- ViewData的value可以存放任意数据类型的数据,因此使用时需要强制转换
ViewBag对象
- ViewBag是dynamic类型的对象,同样也是“视图基类”和“控制器基类”的属性
- 好处:使用灵活方便
- 特点:ViewBag其实是对ViewData数据的包装,使用ViewData保存数据可以使用ViewBag读取,反之也是如此
- 实际开发中最好选择其中一种使用,建议使用ViewBag
TempData对象
- TempData是一种字典对象,也能用于从“控制器到视图的数据传递”,和ViewData类似
- TempData还能实现“不同请求之间”的数据传递,跨请求数据传递
- TempData保存数据的机制是Session,但又不完全和Session相同
- TempData保存数据后,如果被使用,就会被清除,因此后面的请求将不能再次使用
- TempData保存数据后,如果没有被使用,则他保存的时间是Session的生命周期
常用数据传递
传递方式 | 应用场合 | 跨请求 |
---|---|---|
ViewData | 适合传递单个数据,需要类型转换 | 不能 |
ViewBag | 适合传递单个数据,不需要类型转换 | 不能 |
TempData | 主要用来跨多个动作方法传递数据 | 能 |
View()+Model | 适合传递模型数据,不需要类型转换 | 能 |