我知道视图模型可用于渲染视图,但如果页面需要不同的模型,我该如何将它们传递给视图?我该如何使用它们?
答案 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文件并使构建很多慢)然后你没有编译无论如何,请检查你的观点。