2010-02-19 108 views
3

我有一个MVC web应用程序,它使用资源文件的自定义文件夹&命名空间。我需要能够从我的资源文件中提取后期绑定值,即使用资源类型和字符串。我试过使用:使用GetGlobalResourceObject获取资源值*无*使用GetGlobalResourceObject获取资源值

HttpContext.GetGlobalResourceObject("ResourceClass", "SomeKey") 

但是,返回null。当我将资源移动到App_GlobalResources时,它可以工作,但会级联到其他问题。我尝试着通过这些工作,但它们似乎比我回到我原来只能从自定义文件夹中的资源文件中读取的计划更深入和更多。

简而言之,我试图本地化我的xVal验证,错误消息以及RegEx验证程序的模式。我已经做好了一切工作,除了这一块,我试图本地化模式。由于这不是DataAnnotations.RegularExpressionAttribute中的内容,我需要根据属性中提供的资源类型和名称自行获取它。因此我的困境。

我可以使用其他方法获取资源值吗?或者,我的资源文件必须驻留在App_GlobalResources文件夹中吗?如果是后者,那么我将需要为所有其他问题展开另一次讨论 - 或者为正则表达式实现一些粗糙的本地化形式。

在此先感谢。

Jerad

回答

4

这是我们想出了解决方案:

public static class ResourceHelper 
{ 
    public static string GetString(Type resourceType, string resourceName) 
    { 
     return new ResourceManager(resourceType.FullName, resourceType.Assembly) 
      .GetString(resourceName); 
    } 

    public static string GetString(Type resourceType, string resourceName, CultureInfo culture) 
    { 
     return new ResourceManager(resourceType.FullName, resourceType.Assembly) 
      .GetString(resourceName, culture); 
    } 

    public static object GetObject(Type resourceType, string resourceName) 
    { 
     return new ResourceManager(resourceType.FullName, resourceType.Assembly) 
      .GetObject(resourceName); 
    } 

    public static object GetObject(Type resourceType, string resourceName, CultureInfo culture) 
    { 
     return new ResourceManager(resourceType.FullName, resourceType.Assembly) 
      .GetObject(resourceName, culture); 
    } 
}