MVC Controller向View传值(ViewData与ViewBag)

 开发项目中,ASP.NET MVC传值方式总结如下:

ViewData与ViewBag的区别:

1、ViewData是字典类型,赋值方式用字典方式,通过key值读取对应的value,ViewData["myName"]

2、ViewBag是动态类型,使用时直接添加属性赋值即可ViewBag.myName

3、ViewBag和ViewData只在当前Action中有效,等同于View

4、ViewData和ViewBag中的值可以互相访问,因为ViewBag的实现中包含了ViewData

 

 

 ViewBag

//ViewBag定义
public dynamic ViewBag {  
    get {  
        if (_dynamicViewData == null) {  
            _dynamicViewData = new DynamicViewDataDictionary(() => ViewData);  
        }  
        return _dynamicViewData;  
    }  
} 

 

public ActionResult Index()  
{  
    List<string>colors = new List<string>();  
    colors.Add("red");  
    colors.Add("green");  
    colors.Add("blue");  
    ViewBag.ListColors = colors; //colors is List  
    ViewBag.DateNow= DateTime.Now;  
    ViewBag.Name= "mumu";  
    ViewBag.Age = 25;  
    return View();   
}  
<p>  
    My name is <b>@ViewBag.Name</b>, <b>@ViewBag.Age</b> years old.  
    <br />  
    I like the following colors:  
</p>  
<ul id="colors">  
    @foreach (var color in ViewBag.ListColors)  
    {  
    <li><font color="@color">@color</font> </li>  
    }  
</ul>  
<p>  
    @ViewBag.DateNow  
</p>  

 

 ViewData

//ViewData的定义
public ViewDataDictionary ViewData {  
    get {  
        if (_viewData == null) {  
            SetViewData(new ViewDataDictionary());  
        }  
        return _viewData;  
    }  
    set {  
        SetViewData(value);  
    }  
}  

 

   public ActionResult Index()
        {
            List<string> colors = new List<string>();
            colors.Add("red");
            colors.Add("green");
            colors.Add("blue");
            ViewData["listColors"] = colors;
            ViewData["dateNow"] = DateTime.Now;
            ViewData["name"] = "mumu";
            ViewData["age"] = 25;
            return View();
        }
<p>  
    My name is <b>@ViewData["name"] </b>,<b>@ViewData["age"] </b>years old.  
    <br />  
    I like the following colors:  
</p>  
<ul id="colors">  
    @foreach (var color in ViewData["listColors"] as List<string>)  
    {  
    <li><font color="@color">@color </font></li>  
    }  
</ul>  
<p>  
    @ViewData["dateNow"]  
</p>  

 

posted @ 2016-10-27 15:19  木木的博客  阅读(592)  评论(0编辑  收藏  举报