直到现在在C#MVC3我只需要使用一个控制器,只使用一个模型。控制器使用多个模型?
但现在我想我需要访问我的控制器中的两个模型。我想知道这是否允许在MVC模式?
我有一个ProfileController。 ProfileController显然显示用户的配置文件信息。但也有一些我希望展示的数据,如用户创建的组。为此,我也有一个GroupsModel。
我该如何从一个控制器获取两个数据?
直到现在在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);
}
现在你的观点会被强类型的视图模型:
您可以显示信息:@Html.DisplayFor(x => x.Profile.SomeProperty)
假设您没有在单个视图/控制器中插入太多内容,为什么不编写一个包含所需数据的简单视图模型?
public class ProfileInfo
{
public Person Person
{
get;
set;
}
public List<Group> Groups
{
get;
set;
}
}
+1这是我通常采用的方法。 – James 2012-03-29 08:40:43
谢谢,很好的解释。只是我想确定一件事。我可以把这个ViewModel放入“Models”文件夹吗?还是创建一个名为“ViewModels”的单独文件夹更好? – w00 2012-03-29 08:58:25
@ w00 - 在这方面完全取决于您,我个人倾向于将所有模型保留在同一个文件夹中(与视图/数据无关)。除非有必要分开例如分层架构。 – James 2012-03-29 09:01:48