在MVC2中显示本地化枚举属性的推荐方法是什么?
如果我有这样的模型:
public class MyModel { public MyEnum MyEnumValue { get; set; } }
并在视图中的一行如下:
<%: Html.DisplayFor(model => model.MyEnumValue) %>
我希望通过DisplayAttribute注释枚举值,如下所示:
public enum MyEnum { [Display(Name="EnumValue1_Name",ResourceType=typeof(Resources.MyEnumResources))] EnumValue1,[Display(Name="EnumValue2_Name",ResourceType=typeof(Resources.MyEnumResources))] EnumValue2,[Display(Name="EnumValue3_Name",ResourceType=typeof(Resources.MyEnumResources))] EnumValue3 }
解决方法
您可以尝试使用DescriptionAttribute。
例如。
在视图模型中:
public enum MyEnum { [Description("User Is Sleeping")] Asleep,[Description("User Is Awake")] Awake } public string GetDescription(Type type,string value) { return ((DescriptionAttribute)(type.GetMember(value)[0].GetCustomAttributes(typeof(DescriptionAttribute),false)[0])).Description; }
在视图中:
Model.GetDescription(Model.myEnum.GetType(),Model.myEnum) to retrieve the value set in Description.
我使用类似的东西来设置我的Html.Dropdown中的displayname和值。