MVC ViewData和ViewBag
視圖數(shù)據(jù)可以通過ViewBag屬性訪問,它主要是為了從Controller到view進行傳值用的,類似有所使用的ViewData[] 字典類。對于ViewBag是如此的強大,意味著你能動態(tài)的set/get 值,增加任何數(shù)量的的額外字段而不需要強類型的檢測。如:
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();} |
Controller
|
1
2
3
4
5
6
7
8
9
10
11
12
13
|
public ActionResult Index(){List<string> colors = new List<string>();colors.Add("red");colors.Add("green");colors.Add("blue");ViewBag.ListColors = colors; //colors is ListViewBag.DateNow = DateTime.Now;ViewBag.Name = "Hajan";ViewBag.Age = 25;return View(); } |
你和上面的對比 你看見了不同嗎?
View
對應前臺視圖:
1.使用ViewData
<p>
My name is <b>@b>,
b>@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>
</p>
2.使用ViewBag
<p>
My name is <b>@b>, <b>@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>
</p>
效果圖:

ViewBag、ViewData 和 TempData 的區(qū)別:
ViewData 和 TempData 都可以傳遞弱類型數(shù)據(jù),區(qū)別如下:
ViewData 只在當前 Action 中有效,生命周期和 View 相同;
TempData 的數(shù)據(jù)至多只能經過一次Controller傳遞,并且每個元素至多只能被訪問一次,訪問以后,自動被刪除。
TempData 一般用于臨時的緩存內容或拋出錯誤頁面時傳遞錯誤信息,可以將TempData 在使用之前存儲到相應的 ViewData 中以備循環(huán)使用。
作者:Tyler Ning
出處:http://www.rzrgm.cn/tylerdonet/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,如有問題,請微信聯(lián)系冬天里的一把火
浙公網安備 33010602011771號