控制器使用多种型号?

时间:2012-03-29 08:33:16

标签: c# asp.net-mvc asp.net-mvc-3

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

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

我有一个ProfileController。 ProfileController显然显示了用户的个人资料信息。但是我还希望展示一些其他数据,例如用户创建的组。为此我也有一个GroupsModel。

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

2 个答案:

答案 0 :(得分:3)

  

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

使用视图模型:

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)

答案 1 :(得分:1)

假设您没有在单个视图/控制器中添加太多内容,为什么不编写一个包含所需数据的简单视图模型?

public class ProfileInfo
{
   public Person Person
   {
      get;
      set;
   }

   public List<Group> Groups
   {
       get;
       set;
   }
}