控制器使用多个模型

本文关键字:模型 控制器 | 更新日期: 2023-09-27 18:29:34

Untill现在在C#MVC3中,我只需要使用一个只使用一个模型的控制器。

但现在我想我需要访问我的控制器中的两个模型。我想知道MVC模式中是否允许这样做?

我有一个ProfileController。ProfileController明显地显示了用户的配置文件信息。但我也希望显示一些其他数据,比如用户创建的组。为此,我还有一个GroupsModel。

我应该如何从一个控制器获得两个数据?

控制器使用多个模型

我应该如何从一个控制器获得两个数据?

通过使用视图模型:

public class MyViewModel
{
    public ProfileModel Profile { get; set; }
    public GroupsModel Groups { get; set; }
}

然后将该视图模型传递给视图:

public ActionResult ShowProfile()
{
    var model = new MyViewModel();
    model.Profile = ...
    model.Groups = ...
    return View(model);   
}

现在,您的视图将被强类型化为视图模型:

@model MyViewModel

你可以显示信息:

@Html.DisplayFor(x => x.Profile.SomeProperty)

假设您没有在单个视图/控制器中投入太多,为什么不组成一个具有所需数据的简单视图模型呢?

public class ProfileInfo
{
   public Person Person
   {
      get;
      set;
   }
   public List<Group> Groups
   {
       get;
       set;
   }
}