Tim*_*ers 18 asp.net-mvc asp.net-mvc-2
在MVC2中显示本地化枚举属性的推荐方法是什么?
如果我有这样的模型:
public class MyModel {
public MyEnum MyEnumValue { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
和视图中的一行如下:
<%: Html.DisplayFor(model => model.MyEnumValue) %>
Run Code Online (Sandbox Code Playgroud)
我希望只是用DisplayAttribute
这样注释enum值:
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
}
Run Code Online (Sandbox Code Playgroud)
这不受支持.似乎还需要其他东西.实现它的最好方法是什么?
您可以尝试使用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;
}
Run Code Online (Sandbox Code Playgroud)
在视图中:
Model.GetDescription(Model.myEnum.GetType(), Model.myEnum) to retrieve the value set in Description.
Run Code Online (Sandbox Code Playgroud)
我正在使用类似的东西来设置我的Html.Dropdown中的displayname和value.
归档时间: |
|
查看次数: |
8449 次 |
最近记录: |