2012-03-29 80 views
0

直到现在在C#MVC3我只需要使用一个控制器,只使用一个模型。控制器使用多个模型?

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

我有一个ProfileController。 ProfileController显然显示用户的配置文件信息。但也有一些我希望展示的数据,如用户创建的组。为此,我也有一个GroupsModel。

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

回答

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); 
} 

现在你的观点会被强类型的视图模型:

您可以显示信息:
@Html.DisplayFor(x => x.Profile.SomeProperty) 
+0

+1这是我通常采用的方法。 – James 2012-03-29 08:40:43

+0

谢谢,很好的解释。只是我想确定一件事。我可以把这个ViewModel放入“Models”文件夹吗?还是创建一个名为“ViewModels”的单独文件夹更好? – w00 2012-03-29 08:58:25

+0

@ w00 - 在这方面完全取决于您,我个人倾向于将所有模型保留在同一个文件夹中(与视图/数据无关)。除非有必要分开例如分层架构。 – James 2012-03-29 09:01:48

1

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

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

    public List<Group> Groups 
    { 
     get; 
     set; 
    } 
} 
相关问题