在Web Form的專案,後端程式會使用控制項元件來取得資料,並且將資料顯示在控制項內,ASP.NET則會將頁面中的物件轉變為HTML,但是在MVC架構中並沒有像Web Form的控制項,若要從後端傳資料或顯示資料到前端則可以透過ViewData|ViewBag|TempData這幾種方式
ViewData只對一個Action有作用,生命週期只存在單一頁面中,若頁面重新導向ViewData的資料便會清除
//Controller
public ActionResult Index(){
ViewData["msg"]="從Index選擇器所傳來的ViewData訊息!"
}
//View
<p>@ViewData["msg"]</p>//這裡會顯示從Index選擇器所傳來的ViewData訊息!
ViewBag與ViewData有相同的功用,生命週期也一樣僅限在單一頁面中,只要重新導向後資料便會清除,與ViewData的差異是在ViewBag可產生動態屬性,不須再進行類別的轉換
//Controller
public ActionResult Index(){
ViewBag.msg="從Index選擇器所傳來的ViewBag訊息!"
}
//View
<p>@ViewBag.msg</p>//這裡會顯示從Index選擇器所傳來的ViewBag訊息!
TempData預設是將資料放在Session,所以生命週期是存在一整個Request範圍,即使網頁導向後還是能透過TempData取得後端所傳來的資料
//Controller
public ActionResult Index(){
TempData["msg"]="從Index選擇器所傳來的TempData訊息!"
}
//View
<p>@TempData["msg"]</p>//這裡會顯示從Index選擇器所傳來的TempData訊息!