模型视图控制器:视图是否应该知道自定义数据类型?

时间:2015-04-29 10:39:08

标签: model-view-controller custom-data-type

非常简单的问题:在严格MVC design pattern中,我们希望保持模型,视图和控制器可以让View层知道模型中定义了哪些自定义数据类?

例如

我在视图层中有一个CarViewController,在模型层中有一个Car对象。每当模型层更改控制器对象时,"坐着"模型和视图之间的 通知CarViewController,并在我当前的实现中传递更新的汽车数据的副本作为Car类的实例。 这是正确的吗?

我的直觉本能说不,因为我不希望视图层知道模型对象的细节。它不是严格的脱钩。但是,如果我传递特定值而不是传递自定义数据模型,我需要坚持标准/原始值(例如,int作为轮数),它可能需要更多编码。

我是否正确理解了MVC?有没有理由为什么视图不应该知道模型层的自定义类?

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,我会说您的观点需要在大多数情况下了解Car对象的详细信息。您可以这样使用元数据:

型号:

public class Car
{
    [Display(Name = "Number of wheels")]
    public int Wheels { get; set; }
}

查看:     @model Namespace.Models.Car

@* This will display whatever your [Display(Name="Value")] decorator defines
   as a display name, also the editor will respect the data type decorator. *@
@Html.LabelFor(m => m.Wheels)
@Html.EditorFor(m => m.Wheels)

在这种情况下,如果基本上传递一个原语,那么模型的所有元数据都将丢失。