1、ViewBag
Controller:ViewBag.Message = "Hello, Word";
View:@ViewBag.Message
注:ViewBag的類型是動態的,不確定的,直接就可以使用,它的傳值范圍是:controller向view傳值,view自己和自己傳值。
2、ViewData
Controller:ViewData["message""] = "Hello, Word";
View: string message = ViewData["message"] as string;
@message
注:ViewData的類型是很明確的,使用的時候經常需要強制類型轉換,它的傳值范圍是:controller向view傳值,view自己和自己傳值。
3、TempData
Controller: TempData["message"] = "Hello, Word";
Controller:if ("Hello, Word" == TempData["message"] as string) { TempData["message"] = "Hello!"; }
View: string message = TempData["message"] as string;
@message
注:TempData存在的目的就是為了防止redirect時候數據的丟失(ViewData、ViewBag在跳轉後就會變成null,但是TempData不會),它的傳值范圍是當前controller和跳轉後的controller之間。
4、普通頁面傳遞model
Controller:StarModel p = new StarModel (); p.Name = "Suk"; return View(p);
View:<%: ((StarModel )Model).Name %>
5、向強類型試圖傳遞model
a:(WebForm 的實現)
Controller:StarModel p = new StarModel (); p.Name = "Suk"; return View(p);
View: <%@ Page Inherits="System.Web.Mvc.ViewPage<StarModel >" %>
<%: Model.Name %>
b:(Razor 的實現)
Controller:StarModel p = new StarModel (); p.Name = "Suk"; return View(p);
View:@model MOTest.Models.StarModel
@Model.Name
6、ViewModel
Controller: var StarModelTest = new StarModel (p); return View(StarModelTest );
View: @model MOTest.Models.StarModelTest
@Model.Name
7、RedirectToAction
a:(傳遞實體類)
RedirectToAction(控制器,控制器方法,實體類)
b:(傳遞字符串)
RedirectToAction(控制器,控制器方法,new{name=value,....})