2012-03-05 64 views
0

使用.NET MVC Web應用程序播放一點點,並對ViewModels和數據註釋有疑問。帶有自定義數據註釋的.NET MVC渲染視圖

可以說我有一個視圖模型:

public class MyViewModel 
{ 
    [DisplayName("First Name")] 
    public string FirstInfoName { get; set; } 

    [DisplayName("First Information")] 
    public string FirstInfo { get; set; } 

    [DisplayName("Second Name")] 
    public string SecondInfoName { get; set; } 

    [DisplayName("Second Information")] 
    public string SecondInfo { get; set; } 

    [DisplayName("Third Name")] 
    public string ThirdInfoName { get; set; } 

    [DisplayName("Third Information")] 
    public string ThirdInfo { get; set; } 
} 

當我想創建一個編輯查看我的視圖模型我使用:

@Html.EditorForModel() 

這個偉大的工程,MVC將呈現文本框我。但是讓我們說我想在我的視圖中渲染製表符,因此ViewModel的屬性將根據數據註釋進行分組。 例如:

public class MyViewModel 
{ 
    [Tab(1)] 
    [DisplayName("First Name")] 
    public string FirstInfoName { get; set; } 

    [Tab(1)] 
    [DisplayName("First Information")] 
    public string FirstInfo { get; set; } 

    [Tab(2)] 
    [DisplayName("Second Name")] 
    public string SecondInfoName { get; set; } 

    [Tab(2)] 
    [DisplayName("Second Information")] 
    public string SecondInfo { get; set; } 

    [Tab(3)] 
    [DisplayName("Third Name")] 
    public string ThirdInfoName { get; set; } 

    [Tab(3)] 
    [DisplayName("Third Information")] 
    public string ThirdInfo { get; set; } 
} 

是否可以這樣做?也許使用模板?

回答

0

雖然我不打算說你不能這樣做,但它肯定不會是一個簡單的解決方案。原因是屬性是以每個屬性爲基礎進行評估的。選項卡通常顯示爲一個組,並且沒有一種好方法可以將您的html更改爲包含基於相同類型的多個屬性的組。

+0

所以我想解決方案是爲每個編輯頁面創建單獨的視圖。我想要的是爲我的所有編輯頁面提供一個常規編輯視圖。 – user1249974 2012-03-06 08:06:36

+0

那麼,你可以做的是將屬性分組到它自己的類型中,然後爲該類型創建一個EditorTemplate。 – 2012-03-06 15:13:03