2014-06-29 48 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属性以存储下拉值并在视图中使用该值。 –