ViewData
- ViewDataDictionary字典型別
public class ViewDataDictionary : IDictionary<string, object>()
- key必須是字串,內容可儲存任何物件資料 。
- 無法跨Action方法存取,只能存在於此次HTTP Request中。
- 範例:
Action:
public ActionResult ExViewData()
{
//Key: Name, data: Isabella
ViewData["Name"] = "Isabella";
return View();
}
View:
<h2>ExViewData</h2>
Name: @ViewData["Name"]
ViewBag
- dynamic型別
- 略過編譯時期靜態型別檢查,改在執行階段進行,大部分行為就像object型別一樣。
- 效能會比ViewData差一點點。
- 無法跨Action方法存取,只能存在於此次HTTP Request中。
- 範例:
Action:
public ActionResult ExViewBag()
{
//Key: Name, data: Isabella
ViewBag.Name = "Isabella";
return View();
}
View:
<h2>ExViewBag</h2>
Name: @ViewBag.Name
TempData
- TempDataDictionary字典型別
public class TempDataDictionary : IDictionary<string, object>()
- 將資料放在Session之中,所以具有跨Action、Controller存取的能力。
- 一旦資料被取出,就會被刪除,若不想被刪除的話需要用keep()將資料保存。
TempData.Keep();
- 範例:
第一個Controller:
public class FirstController : Controller
{
// GET: First
public ActionResult Index()
{
TempData["Name"] = "Isabella";
return new RedirectResult(@"~\Second\");//轉到第二個Controller
}
}
第二個Controller:
public class SecondController : Controller
{
// GET: Second
public ActionResult Index()
{
return View();
}
}
第二個Controller的View:
<h2>ExTempData</h2>
Name: @TempData["Name"]
沒有留言:
張貼留言