分享
为什么问答平台  ›  专栏  ›  技术社区  ›  Byron Sommardahl

视图模型中属于哪种数据? - What kind of data belongs in a view model?

  •  1
  • Byron Sommardahl  · 技术社区  · 6 天前

    名称“视图模型”表明它为视图建模数据。这是显而易见的。视图模型中还可以或应该包含哪些内容?

    例如,视图可能显示购物车中的项目列表、客户信用卡信息字段和客户账单信息字段。视图模型可能包含所有这些的属性,也可能只包含购物车项目的属性。

    2 回复  |  直到 6 天前
        1
  •  2
  •   Darin Dimitrov    8 年前

    视图模型是一个类,它表示视图显示/修改的字段。例如,如果您要在同一页上显示购物车和客户的信用卡,那么这些属性都应该属于视图模型。

    如果视图要显示日名称的下拉列表,甚至可以在视图模型中放置这样的属性:

    public IEnumerable<SelectListItem> DayNames
    {
        get
        {
            return CultureInfo
                .CurrentCulture
                .DateTimeFormat
                .DayNames
                .Select((dayName, index) => new SelectListItem 
                { 
                    Value = index.ToString(),
                    Text = dayName
                });
        }
    }
    
        2
  •  1
  •   Patrick Karcher    8 年前

    如何准确地使用视图模型是一个判断调用。一个开发人员可能有较少的类型化视图模型,因此可以重用它们。另一个开发人员可能有更多的视图模型,每个视图模型都更小,并且更具体地针对特定的操作。另一个开发人员可能更依赖于ViewData。

    如果可能,请让视图模型组织良好,包含视图所需的内容,并且主要由灯光实体对象组成。但是,如果您有一个复杂的视图,不要害怕创建一个高度定制的视图模型类,它将帮助简化视图逻辑。可以使具有少量未使用数据的可重用视图模型,但避免仅使用少数适合所有视图模型的单一大小的视图模型。视图模型应该只有该视图所需的数据或非常接近的数据。