嗨,我对MVC很新,
与DB中的表对应的.tt文件的数据类型为String for Gender。我在C#类中手动声明了一个针对Gender的枚举。我还实现了Partial类概念,并使用元数据来更改属性的数据类型。
但是当我在Controller中访问它时,这似乎对模型没有任何影响。我仍然将属性Gender的数据类型作为字符串而不是Enum。
我为应用程序中的所有下拉列表创建了单独的枚举,现在我遇到了这个问题。
请帮忙。
答案 0 :(得分:0)
我建议您不要更改设计师生成的类的数据类型。如果它是db中的某种类型的char,那么设计器中的类型对于db模式是正确的。一种解决方案是定义枚举并使用如下所示的扩展方法使用描述属性来装饰它们:
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();
}
然后像这样解开你的枚举:
public enum SomeType
{
[Description("Type1")] FirstType,
[Description("Type2")] SecondType,
[Description("Type3")] ThirdType
}
这将允许您调用SomeType.FirstType.ToDescription()将值传递给您的实体属性。