ASP.NET MVC - 主页面和视图页面的不同模型

时间:2009-04-23 14:43:50

标签: asp.net-mvc master-pages viewmodel

我有一个强类型的母版页,但是我想为它的某些子页面使用不同的类型。

例如,在母版页上......

<%@ Master ... Inherits="System.Web.Mvc.ViewMasterPage<MyWeb.Models.Client>" %>

客户端已经是一个复合对象,因此在某些子页面上,我可以保留相同的模型,只引用成员对象。但是在其他页面上,这样做是没有意义的,因为我正在处理不同的模型,例如,处理客户模型的子页面。

我的母版页仍然需要客户端模型,但子视图将完全适用于不同的模型。问题是,在控制器中,您只能将一个对象模型传递给View。有没有办法将一个模型传递给主模型,另一个模型传递给视图?谢谢!

1 个答案:

答案 0 :(得分:14)

您可以创建层次结构并将基本模型传递给母版页,将子模型传递给您的视图。

public class BaseModel
{
}

public class ChildModelOne : BaseModel
{
}

public class ChildModelTwo : BaseModel
{
}

这样,您的主视图将只能看到自己的数据(在主模型类中可用),而您的视图可以访问子模型类中可用的扩展信息。

很简单。