2012-03-05 76 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());