31-View如何从Action取得数据
从Action取得数据,在ASP.NET MVC可区分成两种方式,一种是“使用弱类型取得数据”,另一种则是“使用强类型取得数据”,两者的差别在于View页面最上方声明的方式。
如果View页面使用弱类型接收来自Controller的数据,在View页面里完全不需要有任何声明,数据可以从ViewData、ViewBag或TempData取得,在页面中也可以通过@Model属性,取得从Action传来的ViewData.Model数据模型,但@Model数据模型的类型将会是object,所以算是弱类型的传值方式。
如果View页面使用强类型方式接收来自Controller的数据,那么,必须在View页面的第一行使用@model关键字引入一个View页面专用的数据模型类型参考,如下范例。
@model MvcApplication1.Models.LoginModel <hgroup class="title"> <h1>@ViewBag.Title.</h1> </hgroup>
使用这种方式有助于提升View的开发效率,因为可以使用Visual Studio 2012的Intellisense提示功能。
1.使用弱类型模型取得数据
~~~练习1~~~
请使用弱类型模型的方式,将用户姓名“张三”,从~/Home/Index动作传递到Index视图。
~~~练习2~~~
已知模型类商品Product,代码如下。
public class Product { public int Id{get;set;} public string Name{get;set;} public string Category{get;set;} public int Price{get;set;} public int StockNum{get;set;} }
请使用弱类型模型的方式,将商品集合从~/Home/Index动作传递到Index视图。
在使用@Model时必须先转换类型,才能享受Intellisense带来的便利,如下所示。
var data=(IEnumerable<Guestbook>)Model;
2.使用强类型模型取得数据
~~~练习3~~~
请将练习2的例子改为强类型传递数据。