在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>????
- ??
- 02??????My?name?is????
- ??
- 03?????<b><%:?ViewData["name"]?%></b>,?????
- ??
- 04?????<b><%:?ViewData["age"]?%></b>?years?old.????
- ??
- 05??????<br?/>????????
- ??
- 06??????I?like?the?following?colors:????
- ??
- 07??</p>????
- ??
- 08??<ul?id="colors">????
- ??
- 09??<%?foreach?(var?color?in?ViewData["listColors"]?as?List<string>){?%>????
- ??
- 10??????<li>????
- ??
- 11?????????<font?color="<%:?color?%>"><%:?color?%></font>????
- ??
- 12?????</li>????
- ??
- 13??<%?}?%>????
- ??
- 14??</ul>????
- ??
- 15??<p>????
- ??
- 16??????<%:?ViewData["dateNow"]?%>????
- ??
- 17??</p>???
Eample :-Using ViewBag
Controller
- public?ActionResult?Index()????
- ??
- 02??{????
- ??
- 03??????List<string>?colors?=?new?List<string>();????
- ??
- 04??????colors.Add("red");????
- ??
- 05??????colors.Add("green");????
- ??
- 06??????colors.Add("blue");????
- ??
- 07???????
- ??
- 08?????ViewBag.ListColors?=?colors;?//colors?is?List?????
- ??
- 09??????ViewBag.DateNow?=?DateTime.Now;????
- ??
- 10??????ViewBag.Name?=?"Hajan";????
- ??
- 11??????ViewBag.Age?=?25;????
- ??
- 12??????return?View();?????
- ??
- 13?}???
你和上面的對比 你看見了不同嗎?
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來檢索它們。