ASP.NET MVC中viewData、viewBag和templateData的使用與區別


一:類型比較

1.1)ViewBag是動態類型(dynamic)。

1.2)ViewData是一個字典型的(Dictionary)-->ViewDataDictionary。

1.3)TempData是一個字典型的(Dictionary)-->TempDataDictionary。

 

二:生命周期和作用域

2.1)ViewBag生命周期和View相同,只能作用於一個View。

2.2)ViewData生命周期和View相同,只能作用於一個View。

2.3)TempData生命周期為被調用前一直存在,但是調用一次的后值就會被刪除,且可以在不同的Action中進行傳值。

TempData  保存在Session中,Controller每次執行請求的時候,會從Session中先獲取 TempData,而后清除Session,獲取完TempData數據,雖然保存在內部字典對象中,但是其集合中的每個條目訪問一次后就從字典表中刪 除。具體代碼層面,TempData獲取過程是通過SessionStateTempDataProvider.LoadTempData方法從 ControllerContext的Session中讀取數據,而后清除Session,故TempData只能跨Controller傳遞一次。

 

三:使用區別

3.1)viewBag不需要數據轉換

Controller: ViewBag.key = new Dictionary<string, string>();

View :

@foreach (var item in ViewBag.key)
{
@item;
}

 

3.2)ViewBag中查詢數據是需要轉換數據類型

Controller: ViewData["key"] = new Dictionary<string, string>() { { "key1", "value1" }, { "key2", "value2" } };

View :

@foreach (var item in ViewData["key"] as Dictionary<string, string>)
{
@item;
}

 

3.3)TempData使用和ViewBag一樣,但是注意TempData對應的值只要被調用一次后就會被自動清空。

 


免責聲明!

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



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