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的使用与区别相关推荐

  1. Asp.net MVC中ViewData与ViewBag的使用方法(改)

    在做MVC开发时经常会用到ViewData和ViewBag进行传值操作,因为很常用所以在这里总结一下,以方便后来人. Album.cs: [csharp] view plain copy using  ...

  2. ASP.NET MVC中ViewData、ViewBag和TempData

    1.ViewData 1.1 ViewData继承了IDictionary<string, object>,因此在设置ViewData属性时,传入key必须要字符串型别,value可以是任 ...

  3. 《MVC》——ViewData、ViewBag、TempData、model

    在学习MVC的过程中,Controller里面向View传递数据很重要,我们在Controller里面讲数据加工以后,传递给View,然后让View将数据在浏览器上显示出来,这样我们就能在浏览器上看见 ...

  4. mvc中viewdata 和viewbag的区别

    ViewData                                                                           ViewBag 它是Key/Val ...

  5. C#中MVC之ViewData与ViewBag的使用与区别

    ViewData是字典类型,赋值方式以键值对的形式,通过key值读取对应的value, ViewData["myName"]. ViewBag是动态类型,使用时直接添加属性赋值点即 ...

  6. 转载ASP.NET MVC 中@Html.Partial,@Html.Action,@Html.RenderPartial,@Html.RenderAction区别

    对这四个的区别做一个总结,清理一下思路,方便以后使用: 1.带有Render的方法返回值是void,在方法内部进行输出:不带的返回值类型为MvcHtmlString,所以只能这样使用:     @Ht ...

  7. MVC中的ViewData、ViewBag和TempData

    一.ViewBag和ViewData的定义 public dynamic ViewBag { get; } public ViewDataDictionary ViewData { get; set; ...

  8. .NET MVC中的ViewData、ViewBag和TempData

    一.ViewBag和ViewData的定义 public dynamic ViewBag { get; } public ViewDataDictionary ViewData { get; set; ...

  9. ASP.NET MVC 个人学习笔记之 Controller传值

    2019独角兽企业重金招聘Python工程师标准>>> //ControllerViewBag.Message = "Modify this template to jum ...

  10. mvc ajax helpers,ASP.NET MVC 实践系列4-Ajax应用

    ASP.NET MVC中支持Ajax的方式和webform中有些区别,没有了updatepanel,所以对于初学者来说在最开始应用时似乎没有在webform中简单,但实际使用上更为灵活而跟webfor ...

最新文章

  1. 数组专题——找重复数字 利用下标
  2. 网易云IM云服务的稳定原来是这样实现的
  3. 【MFC】带背景的工具栏
  4. 排序算法入门之简单选择排序
  5. HTML + CSS 实现 GitHub 项目标签、徽章样式
  6. 都2021年了,c/c++开发竟然还能继续吃香??
  7. electron增加导航按钮_Electron发布6.0 Released版本
  8. jmeter正则中常见的转义字符-笔记三
  9. 学生想学信息学奥赛: DEV-C++的安装与介绍
  10. 英语单词 Yang liang
  11. idea怎么替换git地址(简单明了的教程)
  12. UEditor(集成 135 编辑器插件)(附源码)
  13. 在无处落脚的大海,你就是我的岛屿
  14. 树莓派设置自动连接无线网络
  15. Android7.0适配
  16. 深度学习算法中卷积神经网络的应用
  17. Jetpack学习-Paging
  18. html的标记符一般不分大小写,HTML5标记符的属性一般不区分大小写。
  19. 家用无盘服务器打游戏,开20台的电竞网咖酒店,无盘服务器用千兆网卡够用吗?...
  20. python 日期时间选择器

热门文章

  1. python正则库安装_python中正则表达式regex库的使用
  2. 用php写一个user类,使用php怎么编写一个用户查询类
  3. ping,python实现批量ping包工具--小案例v4优化版本
  4. 帆软高级函数应用之层次坐标函数
  5. 圣诞祝福网页_圣诞营销H5的多种趣味玩法(案例+模板)
  6. 快速排序的python实现
  7. 2个比较经典的PHP加密解密函数分享
  8. 函数式编程与面向对象编程[1]: Lambda表达式 函数柯里化 高阶函数
  9. [C# 基础知识系列]专题十一:匿名方法解析
  10. 高职院校计算机实验室管理的对策与思考