1.ViewData
存放在物件中,生命週期為一個頁面。
Controller :
public ActionResult Index() { ViewData["message"] = "訊息"; return View(); }View :
@ViewData["message"]2.ViewBag
這是MVC 3 之後新增的,使用方式和ViewData一樣,差別在於ViewBag 使用 dynamic 型別,可免去手動轉型的麻煩,使用上較為方便,但也因為動態型別關係,速度上會略比ViewData來的慢(人體無感吧@@)。
Controller :
public ActionResult Index() { ViewBag.message = "訊息"; return View(); }View :
@ViewBag.message3.Temp Data
資料會儲存在Session 中,其生命週期為一個 Request,一旦Request結束就會被刪除。 因此我們可善用此特性讓資料跨不同Action傳遞至View,如RedirectToAction 中作使用,範例如下:
Controller :
public ActionResult Index() { TempData["status"] = "我是從index送過來的!"; return RedirectToAction("about"); } public ActionResult about() { return View(); }View :
我們在Index Action 中使用了 RedirectToAction("about"),最後回傳 about.cshtml 這個ViewTempData :
@TempData["status"]
為了證實TempData僅存活在一個Request中,我們對Browser按下F5,畫面會變成 :
"我是從index送過來的" 這訊息消失了!! TempData 確實已經被刪除。
更詳細的說明,可參考以下網站 :
另外關於 RedirectToAction 所引發的 Http 302 可參考以下 :