2014-06-29 46 views
0

您好我是MVC的新手,我們如何改變Partial類中屬性的數據類型?

對應於DB中表的數據類型爲。我在我的C#類中手動聲明瞭性別的枚舉。我還實現了部分類概念並使用元數據來更改屬性的數據類型。

但是,當我在Controller中訪問它時,對模型沒有任何影響。我仍然將字符串屬性Gender的數據類型作爲字符串,而不是Enum。

我已經爲應用程序中的所有下拉列表創建了單獨的枚舉,現在我正面臨着這個問題。

請大家幫忙。

回答

0

我建議您不要更改設計器生成的類的數據類型。如果它是db中某種類型的char,那麼設計器中的類型對於每個數據庫模式都是正確的。一種解決方法是定義枚舉和使用擴展方法就像下面的描述屬性裝飾一番:

public static string ToDescription(this Enum value) 
    { 
     var da = 
      (DescriptionAttribute[]) 
       (value.GetType().GetField(value.ToString())).GetCustomAttributes(typeof(DescriptionAttribute), 
        false); 
     return da.Length > 0 ? da[0].Description : value.ToString(); 
    } 

然後decortate您的枚舉是這樣的:

public enum SomeType 
    { 
     [Description("Type1")] FirstType, 
     [Description("Type2")] SecondType, 
     [Description("Type3")] ThirdType 
    } 

這將允許你打電話SOMETYPE。 FirstType.ToDescription()將值傳遞給您的實體屬性。

+0

嗨...我使用的是你剛纔提到的屬性。我使用自定義的HtmlHelper來填充Enum的性別下拉列表。我也有一個StringValue屬性類,它具有你所提到的描述。我無法將Enumeration名稱從視圖傳遞給HtmlHelper,以便我可以填充下拉列表。 –

+0

在視圖模型上創建一個列表 myEnumsDropDownValues屬性以存儲下拉值並在視圖中使用該值。 –