在我的管理屏幕上使用通用viewModel是一个好主意吗?

时间:2011-11-24 04:45:19

标签: asp.net-mvc asp.net-mvc-3

我有MVC管理屏幕,用于创建/删除/编辑和列出数据。现在我为每个模型类都有很多viewModels(编辑/删除等)。例如:

public class cityViewModel () {
   public City City { get; set; }
}
public class buildingViewModel () {
   public Building Building { get; set; }
}

我想知道的是,将这些viewModel合并为一个并使用这个通用模型会更好。类似的东西:

public class adminViewModel () {
   public City City { get; set; }
   public Building Building { get; set; }
}

2 个答案:

答案 0 :(得分:0)

asp.net-mvc的创建者没有关于何时以及如何使用ViewModel的官方指南。但是从实际经验来看,应该为单视图创建单视图模型,1:1。开始时,对所有内容使用单一视图模型似乎更简单,但随着更多数据和字段出现在视图模型上,您可能会发现自己在模型绑定时显式排除属性,在呈现视图时复杂if,因此,仅在视图模型中包含其视图所需的字段。

另外,请查看Jimmy Bogard的How we do MVC – View models

答案 1 :(得分:0)

那应该没问题。通过组合多个局部视图页面,人们可以安静地创建View页面。每个部分视图页面负责显示特定的Model对象。在这种情况下,与您一样,人们将模型对象分解为单独的小模型实体,并通过组合这些小实体来创建合并的模型对象。回到视图中,他们将这些小模型实体中的每一个与相应的部分视图相关联。例如,

public class cityViewModel () {
   public City City { get; set; }
}
public class buildingViewModel () {
   public Building Building { get; set; }
}

public class adminViewModel () {
   public City City { get; set; }
   public Building Building { get; set; }
}

然后在主视图页面中:

<% Html.RenderPartial(<View Name>,Model.City) %>