使用 ASP.NET 表达式时未拾取资源文件
Resource file not being picked up when using ASP.NET expression
我正在尝试在 ASP.NET Web 窗体应用程序 (.NET 4.0) 中使用资源文件。我正在使用 VS2012。我在 App_GlobalResources
文件夹中有以下文件:
Address.resx
(默认语言,英语)
Address.ja-JP.resx
(日语)
问题是当我试图在 ASP.NET 页面(*.aspx 文件)中显示日文文本时。如果我使用以下语法,一切正常:
<%= Resources.Address.Street1 %>
但是当我尝试将它绑定到 asp:Label
控件的 属性 时,显示默认文本(英语)而不是日语:
<asp:Label ID="lblStreet1" runat="server" Text='<%$ Resources:Address,Street1 %>'></asp:Label>
顺便说一句,文化是在会话变量中设置的,然后在母版页中我有这样的东西:
Thread.CurrentThread.CurrentCulture = (CultureInfo) Session["ci"];
Thread.CurrentThread.CurrentUICulture = (CultureInfo) Session["uci"];
此外,我不知道这是否相关,但我在 Visual Studio 之外生成了 Address.ja-JP.resx
(使用 Notepad++),然后将文件移动到 App_GlobalResources
文件夹并将文件包含在解决方案中。
我是不是漏掉了什么?
我建议您考虑在标签控件上使用 meta:resourcekey。在您的情况下,您可以使用:
<asp:Label ID="lblStreet1" runat="server" meta:resourcekey="myStreet1Label"></asp:Label>
您的 resx 文件中的资源密钥将如下所示:
<data name="myStreet1Label.Text">
<value xml:space="preserve">The street data.</value></data>
我找到了解决问题的方法。在后面的代码中,我不得不重写 InitializeCulture 方法,我做了这样的事情:
protected override void InitializeCulture()
{
Thread.CurrentThread.CurrentCulture = (CultureInfo) Session["ci"];
Thread.CurrentThread.CurrentUICulture = (CultureInfo) Session["uci"];
base.InitializeCulture();
}
我正在尝试在 ASP.NET Web 窗体应用程序 (.NET 4.0) 中使用资源文件。我正在使用 VS2012。我在 App_GlobalResources
文件夹中有以下文件:
Address.resx
(默认语言,英语)Address.ja-JP.resx
(日语)
问题是当我试图在 ASP.NET 页面(*.aspx 文件)中显示日文文本时。如果我使用以下语法,一切正常:
<%= Resources.Address.Street1 %>
但是当我尝试将它绑定到 asp:Label
控件的 属性 时,显示默认文本(英语)而不是日语:
<asp:Label ID="lblStreet1" runat="server" Text='<%$ Resources:Address,Street1 %>'></asp:Label>
顺便说一句,文化是在会话变量中设置的,然后在母版页中我有这样的东西:
Thread.CurrentThread.CurrentCulture = (CultureInfo) Session["ci"];
Thread.CurrentThread.CurrentUICulture = (CultureInfo) Session["uci"];
此外,我不知道这是否相关,但我在 Visual Studio 之外生成了 Address.ja-JP.resx
(使用 Notepad++),然后将文件移动到 App_GlobalResources
文件夹并将文件包含在解决方案中。
我是不是漏掉了什么?
我建议您考虑在标签控件上使用 meta:resourcekey。在您的情况下,您可以使用:
<asp:Label ID="lblStreet1" runat="server" meta:resourcekey="myStreet1Label"></asp:Label>
您的 resx 文件中的资源密钥将如下所示:
<data name="myStreet1Label.Text">
<value xml:space="preserve">The street data.</value></data>
我找到了解决问题的方法。在后面的代码中,我不得不重写 InitializeCulture 方法,我做了这样的事情:
protected override void InitializeCulture()
{
Thread.CurrentThread.CurrentCulture = (CultureInfo) Session["ci"];
Thread.CurrentThread.CurrentUICulture = (CultureInfo) Session["uci"];
base.InitializeCulture();
}