Controller--->View
Razor中的關鍵字 @model
控制器中:
public class ProductsController: Controller
{
public ActionResult index()
{
var categories = northwind.Categories.ToList();
return View(categories);
}
}
視圖中:
你隻需要在檔案首部寫上"@model強類型模型類"
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsICM2AzNxADNwEDNwEDM2EDMy8CX0Vmbu4GZzNmLn9Gbi1yZtl2Lc9CX6MHc0RHaiojIsJye.jpg)
ViewData
擷取或設定一個字典,其中包含在控制器和視圖之間傳遞的資料。使用ViewData是采用鍵值對的形式,對所定義的資料進行傳遞。在View中會自動識别到擁有唯一鍵值的ViewData,并将資料顯示出來。
定義
<span style="font-size:18px;">publicViewDataDictionary ViewData {
get {
if(_viewData == null) {
SetViewData(newViewDataDictionary());
}
return_viewData;
}
set {
SetViewData(value);
}
}</span>
ViewBag
擷取視圖包,允許自定義屬性進行指派,屬于動态類型(dynamic),以ViewBag.屬性=屬性值得方式進行傳值,其實這裡跟ViewData的使用原理類似。
定義
<span style="font-size:18px;">public dynamic ViewBag {
get {
if(_dynamicViewData == null) {
_dynamicViewData= new DynamicViewDataDictionary(() => ViewData);
}
return_dynamicViewData;
}
}</span>
ViewBag與ViewData之間的差別
1、ViewData是字典類型,指派方式用字典方式,通過key值讀取對應的value,ViewData["myName"]
2、ViewBag是動态類型,使用時直接添加屬性指派即可ViewBag.myName
3、ViewBag和ViewData隻在目前Action中有效,等同于View
4、ViewData和ViewBag中的值可以互相通路,因為ViewBag的實作中包含了ViewData
Controller <--->Controller
TempData傳值
TempData預設是使用Session來存儲臨時資料的,TempData中存放的資料隻一次通路中有效,一次通路完後就會删除了的。這個一次通路指的是一個請求到下一個請求,因為在下一個請求到來之後,會從Session中取出儲存在裡面的TempData資料并指派給TempData,然後将資料從Session中删除。
<span style="font-size:18px;"> public ActionResult Index1()
{
this.TempData["Name"] = "cwl";
return View();
}
public ActionResult Index2()
{
string name = this.TempData["Name"].ToString();
return View();
} </span>