MVC3中 ViewBag、ViewData和TempData的使用和區別


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

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM