如果我在DisplayAttribute
值上使用Enum
,如何根据Enum
值获取本地化资源值。
例如,如果我将Enum
定义如下:
public enum ExpireMode {
[Display(ResourceType = typeof (ModelRes.ExpireMode), Name = "Never")]
Never = 0,
[Display(ResourceType = typeof (ModelRes.ExpireMode), Name = "ByCreated")]
ByCreated = 1,
[Display(ResourceType = typeof (ModelRes.ExpireMode), Name = "ByLastAccessed")]
ByLastAccessed = 2,
}
而且,我们假设我创建了一个.resx
文件,其中包含ModelRes的自定义命名空间,其中包含以下内容:
如果我拥有的是enum的值,我将如何检索正确的本地化值?我想在视图中使用适当的本地化值来显示。
我已经研究过使用类型转换器,扩展方法等的解决方案,但似乎都添加了许多应该相对简单的代码。将DisplayAttribute
用于所有其他目的会使本地化变得微不足道,因为它在内部处理它。
答案 0 :(得分:0)
我发现解决此问题的最简单方法是不需要任何额外代码,以下是View中的代码:
@ModelRes.ExpireMode.ResourceManager.GetString(Model.ExpireMode.ToString())
Model.ExpireMode
是Enum
类型ExpireMode
模型上的属性。 ModelRes
是资源类ExpireMode
的自定义命名空间。我抓住ResourceManager
并使用枚举值的字符串表示来调用GetString
,这为我提供了正确的本地化值。