了解模型在视图中的使用

时间:2016-03-29 11:26:00

标签: c# asp.net-mvc

请考虑以下代码段

public class FirstViewModel
{
    public IEnumerable<SelectListItem> GetSomeData()
    {
      //query dbcontext here
    }
}

public class SecondViewModel
{
    public Employee Employee { get; set; }
    public Stock Stock { get; set; }
    //more properties
}

因此,在第一个代码段中,我可以在我的代码中执行以下操作:

@Html.DropDownListFor(model => Model.Employee, new App.Models.ViewModels.FirstViewModel().GetSomeData(), "Please choose something")

在我可以做的第二个片段中:

@Html.DropDownListFor(model => Model.Employee, new SelectList(Model.Employee), "Select Status")

我想要实现的是在一个视图中为我的MVC应用程序提供多个模型。我的问题是,为每个或一个大视图模型提供一个单独的视图模型会更好,它会引用所有其他模型。我对MVC很新,所以任何帮助都会受到赞赏。

2 个答案:

答案 0 :(得分:0)

我的每个视图都有一个ViewModel - 可能是两个虚拟机的聚合(作为属性)。重要的是要记住VM是视图的模型 - 它本身不是数据模型。数据模型应该在其他地方,并且Controller在两者之间进行映射。

(我以前从来没有ViewModel主动从数据库中提取数据 - 我总是让Controller填充ViewModel。与你的问题没有直接关系,但从一开始就朝着正确的方向发展很重要。)

答案 1 :(得分:0)

我会以使用为基础。如果您一直需要所有数据,为什么不包括所有数据。

需要考虑的其他事项:

  1. 您是否一直需要所有数据?
  2. 读取是否有最大值?
  3. 可能的内存限制?
  4. 访问次数/流量负载注意事项。