直到现在在C#MVC3中,我只需要使用一个只使用一个型号的控制器。
但现在我想我需要在我的控制器中访问两个模型。我想知道MVC模式中是否允许这样做?
我有一个ProfileController。 ProfileController显然显示了用户的个人资料信息。但是我还希望展示一些其他数据,例如用户创建的组。为此我也有一个GroupsModel。
我应该如何从一个控制器获取两个数据?
答案 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;
}
}