31-View如何从Action取得数据

时间:2023-03-09 06:26:01
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的例子改为强类型传递数据。