c# MVC中的ViewData、ViewBag

一、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.namespan>
<span>@ViewDate["name"]span>

四、总结

1、ViewData是字典类型,赋值方式用字典方式,通过key值读取对应的value,ViewData[“myName”]
2、ViewBag是动态类型,使用时直接添加属性赋值即可ViewBag.myName
3、ViewBag和ViewData只在当前Action中有效,等同于View
4、ViewData和ViewBag中的值可以互相访问,因为ViewBag的实现中包含了ViewData

你可能感兴趣的:(c#,mvc,c#,ViewBag,ViewData)