我想在我的页面上创建资源管理器并使用存储在我的资源文件中的一些数据。 (default.aspx.resx和default.aspx.en.resx)
代码如下所示:
System.Resources.ResourceManager myResourceManager = System.Resources.ResourceManager.CreateFileBasedResourceManager("resource",
Server.MapPath("App_LocalResources") + Path.DirectorySeparatorChar, null);
if (User.Identity.IsAuthenticated)
{
Welcome.Text = myResourceManager.GetString("LoggedInWelcomeText");
}
else
{
Welcome.Text = myResourceManager.GetString("LoggedOutWelcomeText");
}
但是当我在我的本地服务器上编译并运行它时,我遇到了这种类型的错误:
无法找到适合磁盘上指定区域(或中性文化)的任何资源。 baseName:resource locationInfo:fileName:resource.resources 描述:执行当前Web请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。
异常详细信息:System.Resources.MissingManifestResourceException:找不到适合磁盘上指定区域性(或中性文化)的任何资源。 baseName:resource locationInfo:fileName:resource.resources
来源错误:
第89行:否则 第90行:{ 第91行:Welcome.Text = myResourceManager.GetString(“LoggedOutWelcomeText”); 第92行:} 第93行:
你能帮我解决这个问题吗?答案 0 :(得分:3)
使用 GetLocalResourceObject(),它是System.Web.Page基础的一部分。 如果要访问全局资源,请使用GetGlobalResourceObject()。
保持简单; - )
答案 1 :(得分:1)
根据MSDN,CreateFileBasedResourceManager需要编译资源文件。通常,将一个.resx文件放在App_LocalResources中。您是否在此目录中有名为resource.XXX.resources(其中XXX是当前文化ID)的目录中的文件。
我没有VS方便在ASP.NET项目中检查这个,但处理资源字符串的常用方法是转到项目属性,“资源”选项卡并在那里创建字符串。这会在您的资源周围生成一个强类型的包装器,从而无需显式创建您自己的ResourceManager。