[英]Using ASP.NET MVC 5, how do I get the localized DisplayAttribute string for an Enum value in a View?
如果我使用的是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,
}
而且,我們假設我已經使用ModelRes的自定義命名空間創建了一個.resx
文件,其中包含以下內容:
如果我擁有的是enum的值,我將如何檢索正確的本地化值? 我想使用適當的本地化值在視圖中顯示。
我已經看過使用類型轉換器,擴展方法等的解決方案,但似乎都添加了許多應該相對簡單的代碼。 將DisplayAttribute
用於所有其他目的使得本地化非常簡單,因為它在內部處理它。
我發現解決這個問題的最簡單的方法是不需要任何額外的代碼,View中的代碼如下:
@ModelRes.ExpireMode.ResourceManager.GetString(Model.ExpireMode.ToString())
Model.ExpireMode
是Enum
類型ExpireMode
模型上的ExpireMode
。 ModelRes
是資源類ExpireMode
的自定義命名空間。 我抓住ResourceManager
並使用枚舉值的字符串表示來調用GetString
,這給了我正確的本地化值。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.