asp.net - 动态初始化 ResourceManager

标签 asp.net .net resx resource-files

我有这个功能,它可以很好地从这个名为 OkayMessages 的特定资源文件中获取翻译后的值。

public static string GetResourceString(string resourceKey){
  ResourceManager resourceManager = Resources.OkayMessages.ResourceManager;
  return resourceManager.GetString(resourceKey);
}

但我有不止 1 个资源文件,我希望此函数也能从这些文件中获取值。只是,我在动态/以编程方式选择正确的资源(管理器)时遇到了问题。 我尝试使用下面的代码,以及它的一些变体,但我总是会出错。

public static string GetResourceString(string resourceFile, string resourceKey){
  ResourceManager resourceManager = new System.Resources.ResourceManager("Resources." + resourceFile, Assembly.GetExecutingAssembly());
  return resourceManager.GetString(resourceKey);
}

我经常遇到的错误是:找不到适合指定文化或中立文化的任何资源。确保“Resources.OkayMessages.resources”已正确嵌入或链接到程序集中..

更新:我正在为我的资源文件使用\App_GlobalResources\文件夹,这似乎就是问题所在。当我将资源文件放在项目的根目录中时,我可以毫无问题地初始化 ResourceManager。

最佳答案

在错误的方向上找了一阵子,才找到这个问题最简单的答案。原来有一个方法叫做GetGlobalResourceObject

所以在我的例子中,我现在使用这行代码完成所有工作:

GetGlobalResourceObject("OkayMessages", "PasswordChanged").ToString();

关于asp.net - 动态初始化 ResourceManager,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11181211/

相关文章:

c# - 嵌入式资源 - resx - 性能 - C#

c# - 如何在 HTTP POST 中获取 List<Model> 对象

c# - 内容处置文件名不适用于 IE

IIS 7.5 上的 ASP.NET MVC - 错误 403.14 禁止

c# - 读取存在的值时出现奇怪的线程 NullReferenceException?

c# - Access Modifier 选项在 RESX 文件中的实际作用是什么?

c# - 有没有办法不使用默认的 resx 文件进行国际化?

c# - 来自 sql 表的 TreeView

c# - StructureMap 中的命名实例和默认实例?

.net - Entity Framework 无法先生成数据库 EDMX