视图模型中属于哪种数据?

时间:2010-05-04 18:45:46

标签: model-view-controller viewmodel

名称“视图模型”表明它为视图建模数据。这很明显。视图模型还可以或应该采用什么?

例如,视图可能会显示购物车中的商品列表,客户信用卡信息的字段以及客户结算信息的字段。视图模型可能包含所有OR的属性,或者它可能只包含购物车项目的属性。

2 个答案:

答案 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应该只包含该视图所需的数据或非常接近。