ASP.NET MVC中viewData、viewBag和templateData的使用与区别

一:类型比较

1.1)ViewBag是动态类型(dynamic)。

1.2)ViewData是一个字典型的(Dictionary)-->TempDataDictionary。

1.3)TempData是一个字典型的(Dictionary)-->ViewDataDictionary。

二:生命周期和作用域

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对应的值只要被调用一次后就会被自动清空。

时间: 2024-10-25 09:03:42

ASP.NET MVC中viewData、viewBag和templateData的使用与区别的相关文章

ASP.NET MVC中ViewData、ViewBag和TempData

1.ViewData 1.1 ViewData继承了IDictionary<string, object>,因此在设置ViewData属性时,传入key必须要字符串型别,value可以是任意类型. 1.2 ViewData它只会存在这次的HTTP要求而已,而不像Session可以将数据带到下HTTP要求. public class TestController : Controller { public ActionResult Index() { ViewData["msg&quo

mvc中viewdata 和viewbag的区别

mvc中viewdata 和viewbag的区别 2013-06-18 15:43:45|  分类:          MVC                          |举报        |字号 订阅 ViewData                                                                           ViewBag 它是Key/Value字典集合                                     

Asp.Net MVC中DropDownListFor的用法(转)

2016.03.04 扩展:如果 view中传入的是List<T>类型 怎么使用 DropList 既然是List<T> 那么我转化成 T  List<T>的第一个,最后一个不就是M吗? @Html.DropDownListFor(model=>model.First().Title, ViewData["Title"] as List<SelectListItem>, "标题", @"dropdown

(四)ASP.NET MVC 中 Controller 给 View 传递数据的方式

1. ViewData: 以 ViewData["keyname"] = value 这样键值对的方式进行数据传送.在对应的 cshtml 中用 @ViewData["keyname"] 来获取值. 2. ViewBag: ViewBag 是 dynamic 类型的,是对 ViewData 的一人动态类型封装,用起来更方便,和 ViewData 共同操作一个数据 .在 Controller 中使用 ViewBag.keyname=value 来赋值,在 cshtml

asp.net MVC中控制器获取表单form提交的数据之实体类数据

第一次写记录文章,难免有不足之处:欢迎指出. 1.新建一个mvc项目如: 2.新建一个Test.cs 注意get,set方法不能简写 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 using System; using System.Collections.Generic; using System.Linq; usi

Asp.net MVC中关于@Html标签Label、Editor使用

@Html帮助器简单说明,记录些基本的跟HTML中对应的@html帮助器,@Html基本包含了html中的表单控件和常用Html在@Html中,带有For的主要是针对强类型的Html类型.用于说明@Html中标签,定义Student对象用于辅助说明, [csharp] view plain copy public class Student { /// <summary> /// 姓名 /// </summary> /// [DisplayName("姓名")]

Asp.net MVC 中Controller返回值类型ActionResult

内容转自 http://blog.csdn.net/pasic/article/details/7110134 Asp.net MVC中Controller返回值类型 在mvc中所有的controller类都必须使用"Controller"后缀来命名并且对Action也有一定的要求: 必须是一个public方法 必须是实例方法 没有标志NonActionAttribute特性的(NoAction) 不能被重载 必须返回ActionResult类型 如: [csharp] view pl

关于 ASP.NET MVC 中的视图生成

在 ASP.NET MVC 中,我们将前端的呈现划分为三个独立的部分来实现,Controller 用来控制用户的操作,View 用来控制呈现的内容,Model 用来表示处理的数据. 从控制器到视图 通常,在 Controller 中,我们定义多个 Action ,每个 Action 的返回类型一般是 ActionResult,在 Action 处理的最后,我们返回对于视图的调用. public ActionResult Index() { return this.View(); } 默认情况下,

ASP.NET MVC中商品模块小样

在前面的几篇文章中,已经在控制台和界面实现了属性值的笛卡尔乘积,这是商品模块中的一个难点.本篇就来实现在ASP.NET MVC4下商品模块的一个小样.与本篇相关的文章包括: 1.ASP.NET MVC中实现属性和属性值的组合,即笛卡尔乘积01, 在控制台实现  2.ASP.NET MVC中实现属性和属性值的组合,即笛卡尔乘积02, 在界面实现   3.再议ASP.NET MVC中CheckBoxList的验证   4.ASP.NET MVC在服务端把异步上传的图片裁剪成不同尺寸分别保存,并设置上