Asp.net MVC的ViewData与ViewBag以及TemplateData的使用与区别
ViewData | ViewBag |
它是Key/Value字典集合 | 它是dynamic类型对像 |
从Asp.net MVC 1 就有了 | ASP.NET MVC3 才有 |
基于Asp.net 3.5 framework | 基于Asp.net 4.0与.net framework |
ViewData比ViewBag快 | ViewBag比ViewData慢 |
在ViewPage中查询数据时需要转换合适的类型 | 在ViewPage中查询数据时不需要类型转换 |
有一些类型转换代码 | 可读性更好 |
参考:http://www.cnblogs.com/wintersun/archive/2012/01/21/2328563.html
一:类型比较
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对应的值只要被调用一次后就会被自动清空。
原文参考:http://www.cnblogs.com/kenking/p/5236793.html
Asp.net MVC的ViewData与ViewBag以及TemplateData的使用与区别相关推荐
- Asp.net MVC中ViewData与ViewBag的使用方法(改)
在做MVC开发时经常会用到ViewData和ViewBag进行传值操作,因为很常用所以在这里总结一下,以方便后来人. Album.cs: [csharp] view plain copy using ...
- ASP.NET MVC中ViewData、ViewBag和TempData
1.ViewData 1.1 ViewData继承了IDictionary<string, object>,因此在设置ViewData属性时,传入key必须要字符串型别,value可以是任 ...
- 《MVC》——ViewData、ViewBag、TempData、model
在学习MVC的过程中,Controller里面向View传递数据很重要,我们在Controller里面讲数据加工以后,传递给View,然后让View将数据在浏览器上显示出来,这样我们就能在浏览器上看见 ...
- mvc中viewdata 和viewbag的区别
ViewData ViewBag 它是Key/Val ...
- C#中MVC之ViewData与ViewBag的使用与区别
ViewData是字典类型,赋值方式以键值对的形式,通过key值读取对应的value, ViewData["myName"]. ViewBag是动态类型,使用时直接添加属性赋值点即 ...
- 转载ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别
对这四个的区别做一个总结,清理一下思路,方便以后使用: 1.带有Render的方法返回值是void,在方法内部进行输出:不带的返回值类型为MvcHtmlString,所以只能这样使用: @Ht ...
- MVC中的ViewData、ViewBag和TempData
一.ViewBag和ViewData的定义 public dynamic ViewBag { get; } public ViewDataDictionary ViewData { get; set; ...
- .NET MVC中的ViewData、ViewBag和TempData
一.ViewBag和ViewData的定义 public dynamic ViewBag { get; } public ViewDataDictionary ViewData { get; set; ...
- ASP.NET MVC 个人学习笔记之 Controller传值
2019独角兽企业重金招聘Python工程师标准>>> //ControllerViewBag.Message = "Modify this template to jum ...
- mvc ajax helpers,ASP.NET MVC 实践系列4-Ajax应用
ASP.NET MVC中支持Ajax的方式和webform中有些区别,没有了updatepanel,所以对于初学者来说在最开始应用时似乎没有在webform中简单,但实际使用上更为灵活而跟webfor ...
最新文章
- 数组专题——找重复数字 利用下标
- 网易云IM云服务的稳定原来是这样实现的
- 【MFC】带背景的工具栏
- 排序算法入门之简单选择排序
- HTML + CSS 实现 GitHub 项目标签、徽章样式
- 都2021年了,c/c++开发竟然还能继续吃香??
- electron增加导航按钮_Electron发布6.0 Released版本
- jmeter正则中常见的转义字符-笔记三
- 学生想学信息学奥赛: DEV-C++的安装与介绍
- 英语单词 Yang liang
- idea怎么替换git地址(简单明了的教程)
- UEditor(集成 135 编辑器插件)(附源码)
- 在无处落脚的大海,你就是我的岛屿
- 树莓派设置自动连接无线网络
- Android7.0适配
- 深度学习算法中卷积神经网络的应用
- Jetpack学习-Paging
- html的标记符一般不分大小写,HTML5标记符的属性一般不区分大小写。
- 家用无盘服务器打游戏,开20台的电竞网咖酒店,无盘服务器用千兆网卡够用吗?...
- python 日期时间选择器
热门文章
- python正则库安装_python中正则表达式regex库的使用
- 用php写一个user类,使用php怎么编写一个用户查询类
- ping,python实现批量ping包工具--小案例v4优化版本
- 帆软高级函数应用之层次坐标函数
- 圣诞祝福网页_圣诞营销H5的多种趣味玩法(案例+模板)
- 快速排序的python实现
- 2个比较经典的PHP加密解密函数分享
- 函数式编程与面向对象编程[1]: Lambda表达式 函数柯里化 高阶函数
- [C# 基础知识系列]专题十一:匿名方法解析
- 高职院校计算机实验室管理的对策与思考