如何在C#中创建字符串HttpContext.GetGlobalResourceObject(@“languagetext”,“PersonalReportFrench”)?

时间:2013-02-19 12:52:47

标签: c# javascript asp.net

我的aspx页面中有javascript的硬编码值正在运行

PersonalReportLink.innerHTML = '<%=(String)HttpContext.GetGlobalResourceObject(@"languagetext","PersonalReportFrench")%>';

现在我想动态地做我正在尝试的是

  

sel_lang =“French”//我正在从用户PerReportStr ='&lt;%=   (字符串)HttpContext.GetGlobalResourceObject(@ “languagetext”,“PersonalReport'+   sel_lang +'“)%&gt;';

执行后给我空字符串,即PerReportStr =“” 我认为正确的关键字不会传递给资源文件

原因是我无法使用C#

正确地在字符串下面形成

(String)HttpContext.GetGlobalResourceObject(@“languagetext”,“PersonalReportFrench”)

请帮我用C#创建上面的字符串?

1 个答案:

答案 0 :(得分:5)

如果此Javascript直接位于ASPX页面上,那么您应该能够使用以下语法访问全局资源对象:

PersonalReportLink.innerHTML = '<%= GetGlobalResourceObject("languagetext","PersonalReportFrench") %>';

但是,在尝试本地化嵌套在javascript文件中的字符串时,您可能会遇到问题。如果这不起作用,那么您可能需要以稍微复杂的方式本地化Javascript。

您可以使用ScriptManager的EnableScriptLocalization属性将Javascript文件用作资源。

将以下内容添加到需要资源的任何页面:

<asp:ScriptManager ID="ScriptManager1" runat="server" EnableScriptGlobalization="true" EnableScriptLocalization="true">
    <Scripts>
        <asp:ScriptReference Path="~/scriptResources.js" ResourceUICultures="fr-FR,de-DE" />
    </Scripts>
</asp:ScriptManager>

这里需要注意的重要事项是脚本文件的路径,ResourceUICultures="fr-FR,de-DE"EnableScriptGlobalization="true"中的文化列表。

接下来,将一个JS文件添加到名为scriptResources.js的项目中,并使用您的默认语言的资源填充它:

var PersonalReportFrench = 'My English text';
var resourceTwo = 'More English text';

然后为本地化字符串scriptResources.fr-FR.js添加另一个JS文件:

var PersonalReportFrench = 'Mon texte Français';
var resourceTwo = 'Texte plus Français';

现在,假设Thread.CurrentThread.CurrentCulture设置为正确的区域性并且它与脚本文件名和ResourceUICultures属性中的区域设置匹配,ScriptManager将加载正确的JS文件,您可以使用变量在你的JS中如此:

PersonalReportLink.innerHTML = PersonalReportFrench;