Asp.net MVC中的ViewData与ViewBag的区别

it2022-05-05  145

在Asp.net MVC 3 web应用程序中,我们会用到ViewDataViewBag,对比一下:

ViewDataViewBag它是Key/Value字典集合它是dynamic类型对像从Asp.net MVC 1 就有了ASP.NET MVC3 才有基于Asp.net 3.5 framework基于Asp.net 4.0与.net frameworkViewData比ViewBag快ViewBag比ViewData慢在ViewPage中查询数据时需要转换合适的类型在ViewPage中查询数据时不需要类型转换有一些类型转换代码可读性更好

 

 

 

 

 

 

 

ViewBag属性:

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

ViewData属性:

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

 

具体实例如下:

在Controller中使用ViewData:

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"] = "Hajan";      ViewData["age"] = 25;      return View();}

ViewData对应的index.cshtml页面:

<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>

 

在Controller中使用ViewBug:

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 = "Hajan"; ViewBag.Age = 25; return View(); }

ViewBug对应的index.cshtml页面:

<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>

 

 

 

转载于:https://www.cnblogs.com/liyuxin/archive/2013/04/11/3014849.html

相关资源:.NET MVC中ViewData,ViewBag和TempData的区别浅析

最新回复(0)