簡體   English   中英

使用ASP.NET MVC 5,如何在View中獲取Enum值的本地化DisplayAttribute字符串?

[英]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.ExpireModeEnum類型ExpireMode模型上的ExpireMode ModelRes是資源類ExpireMode的自定義命名空間。 我抓住ResourceManager並使用枚舉值的字符串表示來調用GetString ,這給了我正確的本地化值。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM