ASP.NET MVC2:如果有多个不同的模型,如何呈现视图

时间:2010-12-12 00:59:29

标签: asp.net asp.net-mvc asp.net-mvc-2

我知道视图模型可用于渲染视图,但如果页面需要不同的模型,我该如何将它们传递给视图?我该如何使用它们?

2 个答案:

答案 0 :(得分:8)

如果您需要传递多个模型,那么创建一个包含较小模型的无所不包的模型作为属性。

例如,假设您要显示一个用于管理应用用户组的页面。您可能需要将IEnumerable<UserDisplayModel>IEnumerable<GroupDisplayModel>传递给视图。创建一个 new 显示模型,如下所示:

class GroupManagementDisplayModel
{
    public IEnumerable<UserDisplayModel> Users { get; set; }
    public IEnumerable<GroupDisplayModel> Groups { get; set; }
}

将此模型的实例传递给您的视图。

答案 1 :(得分:1)

如果你发现你想要做很多事情并且你不太关心创建许多小类型,那么你可以使用.NET 4的dynamic类型:

<%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<dynamic>" %>

在您的操作中,将匿名类型传递给您的视图:

return View(new { Users, Groups });

在视图中引用它们,否则就会引用它们。

你以这种方式失去智能感和强类型,但除非你正在编译你的视图(这需要手动编辑你的.csproj文件并使构建很多慢)然后你没有编译无论如何,请检查你的观点。