Asp.net mvc 在我的管理屏幕上使用公共viewModel是一个好主意吗?

Asp.net mvc 在我的管理屏幕上使用公共viewModel是一个好主意吗?,asp.net-mvc,asp.net-mvc-3,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; } } 我想知道的是,对我来说,将这些viewModels组合成一个并使用这个通用模

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

public class cityViewModel () {
   public City City { get; set; }
}
public class buildingViewModel () {
   public Building Building { get; set; }
}
我想知道的是,对我来说,将这些viewModels组合成一个并使用这个通用模型是否更好。比如:

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

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


另外,请查看吉米·博加德(Jimmy Bogard)

,这应该没问题。通过组合多个部分视图页面,创建视图页面对于人们来说是很常见的。每个局部视图页面负责显示特定的模型对象。在这个场景中,就像您所做的那样,人们将他们的模型对象分解为单独的小模型实体,并通过组合这些小实体来创建合并的模型对象。回到视图中,它们会将这些小模型实体中的每一个与相应的局部视图相关联。例如

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) %>