public dynamic ViewBag { get; } public ViewDataDictionary ViewData { get; set; }
ViewBag和ViewData其實是互通的
ViewBag和ViewData的區別:
ViewBag 不再是字典的鍵值對結構,而是 dynamic 動態類型,它會在程序運行的時候動態解析。
eg:
ViewBag.NumberObjs = new string[] { "one", "two", "three" }; ViewData["NumberArrs"] = new string[] { "one", "two", "three" }; //正確,dynamic類型的解析作用,foreach可以使用 foreach (var item in ViewBag.NumberObjs) { } //錯誤: foreach語句不可作用於object類型對象上 foreach (var item in ViewData["NumberArrs"]) { }
ViewBag其實本質就是ViewData,只是多了層Dynamic控制。所以,使用何種方式完全取決於你個人的愛好。
ViewBag和ViewData僅針對當前Action中有效,生命周期和View相同。
TempData: 保存在session中,controller每次執行請求時,會從Session中獲取Tempdata(),而后清除session,
獲取完TempData數據,雖然保存在內部字典中。但字典中每個條目訪問一次后就從字典中刪除。因此Tempdata數據最多只能經過一次controller傳遞,並且每個元素最多只能訪問一次。之后自動刪除
。詳情請看:http://www.cnblogs.com/tristanguo/archive/2009/04/06/1430062.html
