【问题标题】:Model view controller: shall the view know custom data types?模型视图控制器:视图应该知道自定义数据类型吗?
【发布时间】:2015-04-29 10:39:07
【问题描述】:

非常简单的问题:在一个严格的MVC design pattern 中我们要保留Model、View 和Controller,View 层可以知道模型中定义了哪些自定义数据类吗?

举例

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

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

我对 MVC 的理解正确吗?视图不应该知道模型层的自定义类有什么原因吗?

【问题讨论】:

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


    【解决方案1】:

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

    型号:

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

    查看: @model 命名空间.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)
    

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

    【讨论】:

      猜你喜欢
      • 2015-03-13
      • 1970-01-01
      • 2010-10-23
      • 2013-11-17
      • 2013-12-26
      • 1970-01-01
      • 2011-04-14
      • 1970-01-01
      • 2013-03-25
      相关资源
      最近更新 更多