名称“视图模型”表明它为视图建模数据。这很明显。视图模型还可以或应该采用什么?
例如,视图可能会显示购物车中的商品列表,客户信用卡信息的字段以及客户结算信息的字段。视图模型可能包含所有OR的属性,或者它可能只包含购物车项目的属性。
答案 0 :(得分:2)
视图模型是一个表示视图显示/修改的字段的类。因此,例如,如果您要在同一页面上显示购物车和客户的信用卡,则这些属性都应属于视图模型。
如果视图要显示日期名称的下拉列表,您甚至可以将这样的属性放在视图模型中:
public IEnumerable<SelectListItem> DayNames
{
get
{
return CultureInfo
.CurrentCulture
.DateTimeFormat
.DayNames
.Select((dayName, index) => new SelectListItem
{
Value = index.ToString(),
Text = dayName
});
}
}
答案 1 :(得分:1)
你如何使用你的视图模型是一个判断调用。一个开发人员可能拥有较少的类型化ViewModel,因此可以重复使用它们。另一个开发人员可能拥有更多的ViewModel,每个ViewModel都更小,更特定于特定操作。另一个开发人员可能更多地依赖ViewData。
如果可能,请让您的视图模型组织良好,包含视图所需的内容,并且主要由轻实体对象组成。如果你有一个复杂的视图,不要害怕创建一个高度自定义的视图模型类,这将有助于简化视图逻辑。可以制作可重复使用的ViewModel,其中包含一些未使用的数据,但避免使用几个一刀切的ViewModel。 ViewModels应该只包含该视图所需的数据或非常接近。