2017年4月26日 星期三

Asp.net MVC - Controller傳遞資料給View-1

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"]




沒有留言:

張貼留言