MVC框架實現了數據的分離,使頁面看起來更加的簡潔,MVC4.0中Controller和View的數據傳輸有上邊這幾種方式,今天我們來探討下這幾種方式的卻別。
一:ViewBag和ViewData
ViewBag和ViewData 其實是互通的,他們的區別是 ViewBag不再是鍵值對的存儲形式,而是dynamic動態類型的,他會在程序運行的過程中被解析。
實例
ViewBag本質上是ViewData,只不過是多了層dynamic控制,所以ViewBag和ViewData只針對當前Action有效,和View的生命周期相同。
二:TempData
TempData保存的數據是存儲在Session中,Controller每次請求時都是從Session中取到TempData(),然后清除Session,獲取完TempData的數據,雖然保存的內部字典中,但字典中的每個條目在訪問一次后就從Controller中刪除,所以TempData最多經過一次Controller傳遞,並且每個元素最多只能被訪問一次然后就會唄自動刪除。
注意:這里的一次訪問是指從一個請求到下一個請求,因為在下一個請求到來之后,會從Session中取出保存在里面的TempData數據並賦值給TempData,然后將數據從Session中刪除
三:ViewModel
ViewModel是我們使用最多的數據傳輸方式了,他能夠實現智能提示,
@model PagedList<GM360_REWARD_Model.ViewModels.Reward_Sale_Bad>
調用方式如上,而在Controller中存放數據
PagedList<Reward_Sale_Bad> pageList = CalReward(pageListTemp); //CalReward() 查詢並計算數據的方法
return View(pageList);