ASP.NET MVC中viewData、viewBag和templateData的使用与区别
2016-03-02 22:33
316 查看
一:类型比较
1.1)ViewBag是动态类型(dynamic)。
1.2)ViewData是一个字典型的(Dictionary)-->ViewDataDictionary。
1.3)TempData是一个字典型的(Dictionary)-->TempDataDictionary。
二:生命周期和作用域
2.1)ViewBag生命周期和View相同,只能作用于一个View。
2.2)ViewData生命周期和View相同,只能作用于一个View。
2.3)TempData生命周期为被调用前一直存在,但是调用一次的后值就会被删除,且可以在不同的Action中进行传值。
TempData 保存在Session中,Controller每次执行请求的时候,会从Session中先获取 TempData,而后清除Session,获取完TempData数据,虽然保存在内部字典对象中,但是其集合中的每个条目访问一次后就从字典表中删 除。具体代码层面,TempData获取过程是通过SessionStateTempDataProvider.LoadTempData方法从 ControllerContext的Session中读取数据,而后清除Session,故TempData只能跨Controller传递一次。
三:使用区别
3.1)viewBag不需要数据转换
Controller: ViewBag.key = new Dictionary<string, string>();
View :
@foreach (var item in ViewBag.key)
{
@item;
}
3.2)ViewBag中查询数据是需要转换数据类型
Controller: ViewData["key"] = new Dictionary<string, string>() { { "key1", "value1" }, { "key2", "value2" } };
View :
@foreach (var item in ViewData["key"] as Dictionary<string, string>)
{
@item;
}
3.3)TempData使用和ViewBag一样,但是注意TempData对应的值只要被调用一次后就会被自动清空。
1.1)ViewBag是动态类型(dynamic)。
1.2)ViewData是一个字典型的(Dictionary)-->ViewDataDictionary。
1.3)TempData是一个字典型的(Dictionary)-->TempDataDictionary。
二:生命周期和作用域
2.1)ViewBag生命周期和View相同,只能作用于一个View。
2.2)ViewData生命周期和View相同,只能作用于一个View。
2.3)TempData生命周期为被调用前一直存在,但是调用一次的后值就会被删除,且可以在不同的Action中进行传值。
TempData 保存在Session中,Controller每次执行请求的时候,会从Session中先获取 TempData,而后清除Session,获取完TempData数据,虽然保存在内部字典对象中,但是其集合中的每个条目访问一次后就从字典表中删 除。具体代码层面,TempData获取过程是通过SessionStateTempDataProvider.LoadTempData方法从 ControllerContext的Session中读取数据,而后清除Session,故TempData只能跨Controller传递一次。
三:使用区别
3.1)viewBag不需要数据转换
Controller: ViewBag.key = new Dictionary<string, string>();
View :
@foreach (var item in ViewBag.key)
{
@item;
}
3.2)ViewBag中查询数据是需要转换数据类型
Controller: ViewData["key"] = new Dictionary<string, string>() { { "key1", "value1" }, { "key2", "value2" } };
View :
@foreach (var item in ViewData["key"] as Dictionary<string, string>)
{
@item;
}
3.3)TempData使用和ViewBag一样,但是注意TempData对应的值只要被调用一次后就会被自动清空。
相关文章推荐
- ASP.NET 4 视频教程 风云之旅系列课程
- Asp.Net MVC anti-forgery token的问题:nameidentifier or identityprovider not present
- ASP.NET MVC ActionResult的其它返回值
- ASP.Net MVC开发基础学习笔记(2):HtmlHelper与扩展方法
- 细说 ASP.NET Cache 及其高级用法
- ASP.NET MVC Html.BeginForm用法1
- ASP.NET Mvc开发之删除修改数据
- ASP.NET Web API 简介
- ASP.NET MVC NonActionAttribute使用说明
- ASP.NET MVC Html.ActionLink使用说明
- IIS发布asp.net项目,要做的准备工作及添加项目
- ASP.Net MVC开发基础学习笔记(3):Razor视图引擎、控制器与路由机制学习
- ASP.NET MVC ActionResult的实现
- 自学MVC看这里——全网最全ASP.NET MVC 教程汇总
- ASP.NET MVC 传值方法ViewData与ViewBag的区别
- Metasploit 对 IE 浏览器的极光漏洞进行渗透利用
- ASP.NET在IE9,IE10,IE11中Form表单身份验证失效问题解决方法
- ASP.NET学习路线图
- ASP.NET常被忽视的一些细节
- 如何在ASP.NET应用程序中初始化