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

Model view controller 视图模型中属于哪种数据?,model-view-controller,viewmodel,Model View Controller,Viewmodel,“视图模型”的名称表明它为视图的数据建模。这是显而易见的。视图模型中还可以或应该包含哪些内容 例如,视图可能显示购物车中的项目列表、客户信用卡信息字段和客户账单信息字段。视图模型可能包含所有这些的属性,也可能只包含购物车项目的属性。视图模型是一个表示视图显示/修改的字段的类。例如,如果您要在同一页面上显示购物车和客户的信用卡,那么这些属性都应该属于视图模型 如果视图将显示日名称的下拉列表,您甚至可以在视图模型中放置这样的属性: public IEnumerable<SelectListIt

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


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

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

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

public IEnumerable<SelectListItem> DayNames
{
    get
    {
        return CultureInfo
            .CurrentCulture
            .DateTimeFormat
            .DayNames
            .Select((dayName, index) => new SelectListItem 
            { 
                Value = index.ToString(),
                Text = dayName
            });
    }
}
public IEnumerable日名
{
得到
{
返回文化信息
.当前文化
.DateTimeFormat
.姓名
.Select((dayName,index)=>新建SelectListItem
{ 
Value=index.ToString(),
Text=dayName
});
}
}

如何准确地使用视图模型是一个判断问题。一个开发人员可能拥有更少的类型化视图模型,以便可以重用它们。另一个开发人员可能会有更多的视图模型,每个模型都更小,并且更特定于特定的操作。另一个开发人员可能更依赖ViewData


如果可能,请使视图模型组织良好,包含视图所需的内容,并且主要由灯光实体对象组成。如果您有一个复杂的视图,不要害怕创建一个高度定制的视图模型类,它将帮助简化视图逻辑。制作可重用的ViewModel,其中包含一些未使用的数据是可以的,但要避免只使用几个“一刀切”的ViewModel。ViewModels应该只包含该视图所需的数据或非常接近的数据

如果输入字段开始时为空,该怎么办?该数据将通过modelbinder提供给提交操作。这是否意味着提交操作应该接收视图模型?是的,提交操作应该接收将映射到域模型的视图模型,域模型将被处理到数据访问层。