一、ViewBag和ViewData的定义
public dynamic ViewBag { get; }
public ViewDataDictionary ViewData { get; set; }
二、ViewBag和ViewData的区别
ViewData | ViewBag |
---|---|
它是key/value字典集合 | 它是dynamic类型对象 |
从asp.net mvc1就有了 | 从asp.netmvc3才有 |
基于asp.netframework 3.5 | 基于asp.net framework4.0 |
viewdata比viewbag快 | viewbag比viewdata慢 |
页面查询数据时需要转换合适的类型 | 在页面查询数据时不需要转换合适的类型 |
有一些类型转换代码 | 可读性较好 |
三、使用说明
1、在Controllers设置值
public ActionResult Index()
{
ViewBag.name = "helloViewBag"; //设置值
ViewData["name"] = "helloViewData"; //设置值
return View();
}
2、在View中获取值
<span>@ViewBag.name</span>
<span>@ViewDate["name"]</span>
四、总结
1、ViewData是字典类型,赋值方式用字典方式,通过key值读取对应的value,ViewData[“myName”]
2、ViewBag是动态类型,使用时直接添加属性赋值即可ViewBag.myName
3、ViewBag和ViewData只在当前Action中有效,等同于View
4、ViewData和ViewBag中的值可以互相访问,因为ViewBag的实现中包含了ViewData