我的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#创建上面的字符串?
答案 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;