首页 > 代码库 > asp.net mvc 4 高级编程学习笔记:第三章 视图

asp.net mvc 4 高级编程学习笔记:第三章 视图

1、基础规则

视图的职责是向用户提供用户界面。

视图位于View目录下:有普通的需要控制器渲染的视图,有局部视图,有布局视图等各种视图。

2、视图渲染

控制器默认情况下渲染与控制器同名的目录内的与Action同名的视图,也可以在Action中,通过return view(“视图名”)来指定需要渲染的其他视图,如果视图位于同一个目录内,采用视图名称即可,如果视图位于不同的目录内,需要提供服务端根路径“~/view/Example/index.cshtml”。

3、强类型视图与数据传递

控制器中通过viewData和ViewBag给渲染的视图传递数据,viewData是键值对的对象,viewBag是dynamic字段类型。viewData是viewDataDictionary类型,不是普通的Dictionary类型,它具有一个额外的Model属性,利用这一点可以很容易的向视图传递一个特定的视图类型,称为视图主模型(只能一个),此对象需要作为return view(对象)使用,并在视图的顶部添加如下的代码进行声明:

例如:强类型方式

@model List<MvcMusicStore.Models.Album>

@foreach (var album in Model)

在视图中通过@Model变量获取声明的强类型对象。

如果要传递与视图主模型无关的其它数据,可以存放在viewBag中,通过类型转换的方式来实现强类型的效果。 

例如: 非强类型方式

@using MvcMusicStore.Models;

@foreach (Album album in ViewBag.albums)

 4、视图模型ViewModel

 对于一个视图只能有一个视图主模型的问题,为了能够将所有的数据都采用强类型的方式进行访问,可以单独编写一个“视图模型类”,将需要传递的数据定义在视图模型类中。

例如:定义视图模型

public class ShoppingCartViewModel
{
public List<Cart> CartItems { get; set; }
public decimal CartTotal { get; set; }
}

强类型引用视图模型:@model MvcMusicStore.ViewModels.ShoppingCartViewModel

 

asp.net mvc 4 高级编程学习笔记:第三章 视图