Asp.net MVC中ViewData、ViewBag和TempData区别
2013-11-01 18:04
393 查看
1.ViewData和ViewBag
ViewBag和ViewData生命周期相同,仅对当前View有效,不同的是ViewBag的类型不再是字典的键值对结构,而是dynamic动态类型。
2.TempData
TempData保存在Session中,Controller每次执行请求的时候,会从Session中先获取TempData,而后清除Session,获取完TempData数据,虽然保存在内部字典对象中,但是其集合中的每个条目访问一次后就从字典表中删除。
具体代码层面,TempData获取过程是通过SessionStateTempDataProvider.LoadTempData方法从ControllerContext的Session中读取数据,而后清除Session,故TempData只能跨Controller传递一次。
如果我们想读取TempData的值但是又不让它被删除,可以使用TempData.Peek("Key")方法。如果想再保持一次TempData里面的值,可以使用TempData.Keep("Key").
ViewBag和ViewData生命周期相同,仅对当前View有效,不同的是ViewBag的类型不再是字典的键值对结构,而是dynamic动态类型。
2.TempData
TempData保存在Session中,Controller每次执行请求的时候,会从Session中先获取TempData,而后清除Session,获取完TempData数据,虽然保存在内部字典对象中,但是其集合中的每个条目访问一次后就从字典表中删除。
具体代码层面,TempData获取过程是通过SessionStateTempDataProvider.LoadTempData方法从ControllerContext的Session中读取数据,而后清除Session,故TempData只能跨Controller传递一次。
如果我们想读取TempData的值但是又不让它被删除,可以使用TempData.Peek("Key")方法。如果想再保持一次TempData里面的值,可以使用TempData.Keep("Key").
相关文章推荐
- ASP.NET MVC程序传值方式:ViewData,ViewBag,TempData和Session
- Asp.net MVC中ViewData、ViewBag和TempData区别
- ASP.NET MVC ViewBag/ViewData/TempData区别
- ASP.NET MVC程序传值方式:ViewData,ViewBag,TempData和Session
- ASP.NET MVC 3中ViewBag, ViewData和 TempData 推荐
- asp.net mvc中ViewData、ViewBag和TempData的详解
- asp.net mvc之TempData、ViewData、ViewBag
- ASP.NET MVC传递Model到视图的多种方式总结(二)__关于ViewBag、ViewData和TempData的实现机制与区别
- ASP.Net MVC中 ViewBag, ViewData, TempData, ViewModel 的区别
- asp.net mvc 中 tempdata、viewdata、viewbag生命周期(转载)
- ASP.NET MVC中ViewData、ViewBag和TempData
- [转]Asp.net MVC中的ViewData与ViewBag
- ASP.NET MVC 传值方法ViewData与ViewBag的区别
- Asp.net MVC中的ViewData与ViewBag
- Asp.net MVC中的ViewData与ViewBag
- Asp.net MVC中的ViewData与ViewBag
- Asp.net MVC中的ViewData与ViewBag的区别
- Asp.net MVC中的ViewData与ViewBag
- asp.net mvc学习笔记1(razor,html,url辅助器,ViewData,ViewBag)
- asp.net mvc中TempData和ViewData的区别