若要將資料從後端Controller傳遞到View,除了使用ViewModel以外,最常見的就是底下三種
TempData、ViewData、ViewBag,這篇就介紹三者的一些差異和用法
若要將資料從後端Controller傳遞到View,除了使用ViewModel以外,最常見的就是底下三種:
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.message
3.Temp Data
資料會儲存在Session 中,其生命週期為一個 Request,一旦Request結束就會被刪除。 因此我們可善用此特性讓資料跨不同Action傳遞至View,如RedirectToAction 中作使用,範例如下:
Controller :
public ActionResult Index()
{
TempData["status"] = "我是從index送過來的!";
return RedirectToAction("about");
}
public ActionResult about()
{
return View();
}
View :
TempData :
@TempData["status"] 我們在Index Action 中使用了 RedirectToAction("about"),最後回傳 about.cshtml 這個View
Blogger : http://inblackbox.blogspot.tw/
幫忙宣傳--推廣的--(賣衣服的)
奇摩拍賣--http://tw.user.bid.yahoo.com/tw/user/Y7925877308&u=:Y7925877308&tp=