我有两个页面A和B.两者都应该使用适当的全局资源显示文本,具体取决于Web.Conf中的文化设置。
在Page A
我可以根据文化设置(在这种情况下是法语)可视化文本。
Page A
还有一个使用GetUrl
创建到Page B
<asp:HyperLink
runat="server"
Text='<%# Eval("Title") %>'
NavigateUrl='<%# GetRouteUrl("TopicHub", new {TitleUrl = Eval("TitleUrl")}) %>'>
</asp:HyperLink>
在访问页面B页面我不能再看到法语文字了,并且应用了英文文本(默认值)。 奇怪的事情是我直接在浏览器中打开Page B,Literal以法语显示。
所以我调试了Global.asax.cs,我发现在点击使用GetRouteUrl创建的链接时,var Thread.CurrentThread.CurrentCulture
和CurrentUICulture
是英文的而不是法文的,而不是我的Web.Config中。
我的问题是:
我的想法已经用完了,所以最后的想法是使用Web.Conf中的值强制使用Thread.CurrentThread.CurrentCulture
在Global.asax.cs中。
请让我知道你对此的看法。谢谢!
第A页:
<asp:Literal ID="uxLatestGuides"
runat="server"
Text="<%$ Resources:Global, LatestGuides %>" />
Page B:
<asp:Literal ID="uxLatestGuides"
runat="server"
Text="<%$ Resources:Global, LatestGuides %>" />
的Global.asax.cs
protected void Application_BeginRequest(object sender, EventArgs e)
{
var check1 = Thread.CurrentThread.CurrentCulture;
var check2 = Thread.CurrentThread.CurrentUICulture;
}
的Web.Config
<?xml version="1.0"?>
<configuration>
<system.web>
<pages enableViewState="false" theme="Cms-FE-00" >
</pages>
<globalization culture="fr" uiCulture="fr"/>
</system.web>
</configuration>
答案 0 :(得分:0)
我能找到解决这个问题的方法。
分析Global.asax.cs Routes
我注意到虚拟网址 topic/{TitleUrl}
将映射到物理网址 ~/Cms/FrontEndCms/CategoryList.aspx
}
routes.MapPageRoute("TopicHub", "topic/{TitleUrl}", "~/Cms/FrontEndCms/CategoryList.aspx");
在我的特定情况下,我在~/Cms/FrontEndCms/
中有了Web.Config文件,因此当在{Routed URL页面'上创建链接时,如mysite.com/topic/my-page
,Web.Config将不在正确的位置但在另一个文件夹中,我的文化设置不适用。
解决方案是将Web.Config移动到我的网站的ROOT,以便它适用于所有路由。希望可以帮助其他人。