ASP.NET MVC3中的ViewBag动态性
2011-09-11 10:00 随风浪迹天涯 阅读(6023) 评论(4) 编辑 收藏 举报这些天在学习MVC3 ,因为在和我的mentor在开发一个公司内部的项目,所以就开始学习MVC,前些天学习Razor引擎的时候,看到国外的一篇文章介绍ViewBag的,就拿过来,原文请点击这里:ViewBag dynamic in ASP.NET MVC3
在MVC 3中的有一个新的ViewBag 动态特性,它主要是为了从Controller到view进行传值用的,类似有所使用的ViewData[] 字典类。对于ViewBag是如此的强大,意味着你能动态的set/get 值,增加任何数量的的额外字段而不需要强类型的检测。
为了看这些的不同(和不用viewbag的时候),我们来看看一下的实例:
Eample:--using ViewBag
Controller
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(); }
View (ASPX View Engine)
<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>
Eample :-Using ViewBag
Controller
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(); }
你和上面的对比 你看见了不同吗?
View (ASPX View Engine)
<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>
在上面的例子以内ViewBag是动态类型的,所以我没有必要把 ViewBag.ListColors 转换成如 List<string>这样子的形式。另一方面,这个ViewData["key"]是一个对方。
如果你在你的Controller中使用ViewData["ListColors"]=Colors,那么你可以在View试图中通过ViewBag.ListColors来检索它们。
出处:http://www.cnblogs.com/damonlan
Q Q:*********
E_mail:Damon_lan@163.com or Dongcai.lan@hp.com
本博文欢迎大家浏览和转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,在『参考』的文章中,我会表明参考的文章来源,尊重他人版权。若您发现我侵犯了您的版权,请及时与我联系。