我有一个MVC网络应用程序,它使用自定义文件夹&资源文件的命名空间。我需要能够从资源文件中提取后期绑定值,即使用资源类型和字符串。我尝试使用:
HttpContext.GetGlobalResourceObject("ResourceClass", "SomeKey")
但是返回null。当我将资源移动到App_GlobalResources时,它可以工作,但是会逐渐陷入其他问题。我尝试过这些,但它们似乎更深入,数量更多,而不是回到我原来的计划,只能从自定义文件夹中的资源文件中读取。
简而言之,我正在尝试本地化我的xVal验证,包括错误消息,以及在RegEx验证器的情况下,模式。我已经完成了所有工作,除了这一件,我正在尝试本地化模式。由于这不是内置于DataAnnotations.RegularExpressionAttribute中,因此我需要根据属性中提供的资源类型和名称自行获取它。因此我的困境。
我可以使用其他方法获取资源值吗?或者,我的资源文件必须驻留在App_GlobalResources文件夹中吗?如果是后者,那么我将需要为我的所有其他问题再开一个讨论 - 或者为正则表达式的东西实现一些更为粗糙的本地化。
提前致谢。
Jerad
答案 0 :(得分: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);
}
}