您的位置:首页 > 编程语言 > ASP

Asp.NET MVC——ViewBag

2015-12-25 15:45 603 查看

viewbag只是控制器传给视图数值的一个工具

★ViewData和ViewBag:

生命周期相同,仅对当前View有效,不同的是ViewBag的类型不是字典的键值对结构,而是dynamic动态类型。

ViewDataViewBag
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

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中进行传值,但他调用一次的;就会被删除。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: