2012-03-05 119 views
1
public enum WeightGoalStatus 
{ 
    InProgress, 
    Failed, 
    Succeded 
} 

public static class WeightGoalStatusExtensions 
{ 
    public static string ToLocalizedString(this WeightGoalStatus status) 
    { 
     return "Localizedstring";//should be code that queries a resource based on the value of the enum 
    } 
} 

這可能嗎? 也。好主意? 它基本上是一個剃刀視圖,我需要此資源lookup.cant顯示「INProgress」給用戶。資源查找枚舉

回答

2

簡單。而我們其實也是這樣做的。

public static class WeightGoalStatusExtensions 
{ 
    public static string ToLocalizedString(this WeightGoalStatus status) 
    { 
     switch (status) 
     { 
      case WeightGoalStatus.InProgress 
       return Resources.WeightGoalStatus.InProgress_ToLocalizedString; 
      // others 
     } 
    } 
} 

只是像往常一樣創建一個資源文件,一定要將CustomTool設置爲ResXFileCodeGenerator。

此外,請確保您正確設置了文化信息。

1

你可以嘗試一個TypeConverter。一個完整的例子here

+1

ASP.NET MVC不會使用這個,AFAIK。 – usr 2012-03-05 23:34:06

+0

可能不是現成的,但你可以寫一個自定義的顯示屬性。 – RPM1984 2012-03-06 05:56:44

0

這將工作,我會考慮這個乾淨的代碼。

替代方法:使用諸如「Enums.WeightGoalStatus.InProgress」之類的鍵創建資源文件,並使用動態鍵在該資源文件中查找值。這會爲你節省一些代碼。儘管現有資源基礎架構非常好,但您也可以使用靜態字典。

+0

我的問題恰恰是如何查詢資源。請提供示例代碼:) – ignaciofuentes 2012-03-05 22:47:15

+0

看起來像我誤解了它。我以爲你需要最佳實踐建議。在Google上搜索「.net資源文件」以查找關於如何查詢資源的大量信息。 – usr 2012-03-05 23:35:41

0

您可以通過簡單地做以下

ResourceManager的RM =新的ResourceManager避免擴展類( 「ApplicationName.App_LocalResources.Enums」,Assembly.GetExecutingAssembly());

string LangEnum = rm.GetString(e_Audits.ToString());