2011-12-15 22 views
1

對於從單個模型派生多個視圖模型的最佳方法,我不清楚。從單一模型派生出的多個MVC ViewModels

該模型目前具有數據註釋,但我們喜歡視圖模型作爲抽象層的靈活性,並且還根據視圖需求提供使用具有不同註釋的模型屬性的靈活性。

我見過用MetadataType屬性聲明基本模型,指向具有數據註釋的視圖模型,但是當我們需要1:M(1 model:M viewmodels)時,這會強制1:1關係。

我們現在沒有使用映射器並將映射器留在一邊,手動完成包含代表單個模型的數據註釋的視圖模型的最佳方式是什麼?也許讓視圖模型從模型類派生出來,刪除模型數據註釋,然後在視圖模型中創建鏡像模型的屬性(但不能與模型屬性相同的名稱),並且視圖被指定在視圖模型屬性,如數據說明......

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

感謝

回答

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; } 
} 
+0

「User」類型的定義在哪兒?並且這不會破壞ViewModel的目的,因爲(我猜你的意思是將該屬性設置爲`ModelUser`對象),這根本不會調整Model類。 – 2011-12-15 17:43:12