Asp.NET MVC——ViewBag
2015-12-25 15:45
603 查看
viewbag只是控制器传给视图数值的一个工具
★ViewData和ViewBag:
生命周期相同,仅对当前View有效,不同的是ViewBag的类型不是字典的键值对结构,而是dynamic动态类型。ViewData | ViewBag |
Key/Value字典集合 | dynamic类型对象 |
从ASP.NET MVC1就有了 | ASP.NET MVC3才有 |
基于ASP.NET 3.5 framework | 基于ASP.NET 4.0 framework |
ViewData比ViewBag快 | ViewBag比ViewData慢 |
在ViewData中查询数据时需要转换合适的类型 | 在ViewBag中查询数据时不需要类型转换 |
有一些类型转换代码 | 可读性更好 |
ViewData["Title"]="ViewData";
●ViewBag
ViewBag.Title="ViewBag"
★TempData
TempData保存在Session中,Controller每次执行请求的时候,会从Session中先获取TempData,而后清除Session,获取完TempData数据,虽然保存在内部字典对象中,但是其集合中的每个条目访问一次后就从字典中删除,所以TempData只能跨页传递一次。!如果我们想读取TempData的值但是又不让它被删除,可以使用TempData.Peek("Key")方法。如果想再保持一次TempData里面的值,可以使用TempData.Keep("Key")。
可以跨页调用,但是只能使用一次就会被删除,可以吧值存放到其他地方做永久使用
使用方式:
原始的Action中
TempData["Message"] = new List<string>();
View里
@{
var list = (TempData["Message"] as List<string>)
foreach(var item in list)
{
}
}
注:TempDataViewData的区别是生命周期不同,ViewData、ViewBag的生命周期和view同,TempData则可以在不同的Action中进行传值,但他调用一次的;就会被删除。
相关文章推荐
- ASP.NET5/MVC6 下生成Helppage
- asp.net textbox控件readonly为true时,后台取值的问题
- asp.net dataset 判断是否为空
- C# asp.net 操作Word的前提配置和简单的方法
- asp.net中绘制大数据量的可交互的图表
- casperjs页面抓取问题
- asp.net中log4net使用方法
- 树莓派2上手 —— Raspbian的一些基本配置问题
- MVC_DB
- ASP.NET中Repeater控件实现分页功能
- 使用自定义annotation接口进行aspectj动态缓存[要对各个接口进行key-value缓存]
- 基于@Aspect的AOP配置
- casperjs#3#截图问题
- ASP.NET 里的 JSON操作
- 解读ASP.NET 5 & MVC6系列(16):自定义View视图文件查找逻辑
- 解读ASP.NET 5 & MVC6系列(14):View Component
- Asp.net学习笔记
- Asp.net学习笔记
- asp.net中web.config配置节点大全详解
- asp.net中web.config配置节点大全详解