.Net MVC控制器向View传值的三种方法讲解


1.提供视图模型对象
你能把一个对象作为View方法的参数传递给视图.

1public ViewResult Index() 
2
3DateTime date = DateTime.Now; 
4return View(date); 
5}
然后我们在视图中使用Razor的Model关键字来访问这个对象


1@{ 
2ViewBag.Title = "Index"
3
4<h2>Index</h2> 
5The day is: @(((DateTime)Model).DayOfWeek)
或者是

1@model DateTime 
2@{ 
3ViewBag.Title = "Index"
4
5<h2>Index</h2> 
6The day is: @Model.DayOfWeek

2.使用ViewBag(视图包)传递数据
View  Bag 允许在一个动态的对象上定义任意属性,并在视图中访问它.

这个动态的对象可以通过Controller.ViewBag属性

01public ViewResult Index() 
02
03    ViewBag.Message = "Hello"
04    ViewBag.Date = DateTime.Now; 
05    return View(); 
06
07   
08 @{ 
09 ViewBag.Title = "Index"
10 
11 <h>Index</h> 
12 The day is: @ViewBag.Date.DayOfWeek 
13 <p /> 
14 The message is: @ViewBag.Message

3. 使用View Data传递数据
在MVC3.0之前,主要是通过这种方式传递数据,它是通过用 ViewDataDictionary类实现的,而不是动态的对象.ViewDataDictionary类是类似标准"键/值"集合,并通过
Controller类的ViewData属性进行访问的.这个方法,在视图中需要对对象进行转换.

01控制器中: 
02 public ViewResult Index() 
03 
04    ViewData["Message"] = "Hello"
05    ViewData["Date"] = DateTime.Now; 
06    return View(); 
07 
08   
09视图中: 
10 @{ 
11 ViewBag.Title = "Index"
12 
13 <h2>Index</h2> 
14 The day is: @(((DateTime)ViewData["Date"]).DayOfWeek) 
15 <p /> 
16 The message is: @ViewData["Message"]