从单一模型派生的多个MVC ViewModel

时间:2011-12-15 17:04:01

标签: asp.net-mvc viewmodel

我不清楚有多个视图模型来自单一模型的最佳方法。

该模型目前具有数据注释,但我们喜欢视图模型作为抽象层的灵活性,并且还提供根据视图需求使用具有不同注释的模型属性的灵活性。

我已经看到使用MetadataType属性声明基本模型以指向具有数据注释的视图模型,但是当我们需要1:M(1个模型:M视图模型)时,这会强制建立1:1的关系。

我们目前不使用映射器并将映射器放在一边,这是手动完成包含代表单个模型的数据注释的视图模型的最佳方法。也许让viewmodel派生自模型类,删除模型数据注释,然后在视图模型中创建镜像模型的属性(但不能与隐藏模型属性的名称相同?)并查看视图视图模型属性上的数据注释,例如......

    [DisplayName("Version Number")]
    [StringLength(30)]
    public double VMVersionNumber
    {
        get {
            return VersionNumber; // VersionNumber is model property
        }
        set {
            value = VersionNumber;   
        }
    }

由于

1 个答案:

答案 0 :(得分:1)

组合不会比继承更好吗?

public class ModelUser
{
  [StringLength(30)]
  public string FirstName { get; set; }

  [StringLength(30)]
  public string LastName { get; set; }
}

public class ViewModelForSomeView
{
   public ModelUser MyUser { get; set; } 
   public string OtherPropertyNecessaryForThisView { get; set; }
   public string AnotherPropertyNecessaryForThisView { get; set; }
}