控制器使用多个模型
本文关键字:模型 控制器 | 更新日期: 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;
}
}