MVC 控制器向View傳值的三種方法(轉)
1.提供視圖模型對象
你能把一個對象作為View方法的參數傳遞給視圖.
1
2
3
4
5
|
public
ViewResult Index()
{
DateTime date = DateTime.Now;
return
View(date);
}
|
然后我們在視圖中使用Razor的Model關鍵字來訪問這個對象
@{ ViewBag.Title = "Index"; } <h2>Index</h2> The day is: @(((DateTime)Model).DayOfWeek)
或者是
@model DateTime @{ ViewBag.Title = "Index"; } <h2>Index</h2> The day is: @Model.DayOfWeek
2.使用ViewBag(視圖包)傳遞數據
View Bag 允許在一個動態的對象上定義任意屬性,並在視圖中訪問它.這個動態的對象可以通過Controller.ViewBag屬性訪問它.
public ViewResult Index() { ViewBag.Message = "Hello"; ViewBag.Date = DateTime.Now; return View(); } @{ ViewBag.Title = "Index"; } <h>Index</h> The day is: @ViewBag.Date.DayOfWeek <p /> The message is: @ViewBag.Message
3. 使用View Data傳遞數據
在MVC3.0之前,主要是通過這種方式傳遞數據,它是通過用 ViewDataDictionary類實現的,而不是動態的對象.ViewDataDictionary類是類似標准"鍵/值"集合,並通過
Controller類的ViewData屬性進行訪問的.這個方法,在視圖中需要對對象進行轉換.
控制器中: public ViewResult Index() { ViewData["Message"] = "Hello"; ViewData["Date"] = DateTime.Now; return View(); } 視圖中: @{ ViewBag.Title = "Index"; } <h2>Index</h2> The day is: @(((DateTime)ViewData["Date"]).DayOfWeek) <p /> The message is: @ViewData["Message"]