我有两个页面A和B.两个都应该显示一个文本使用适当的全球资源取决于文化设置在Web.Conf。可能的Bug - Asp.net路由本地化与线程奇怪的问题
在Page A
我能够根据文化设置(因此在这种情况下为法文)显示文字。
Page A
还具有使用GetUrl
创建一个网址(路由)到Page B
<asp:HyperLink
runat="server"
Text='<%# Eval("Title") %>'
NavigateUrl='<%# GetRouteUrl("TopicHub", new {TitleUrl = Eval("TitleUrl")}) %>'>
</asp:HyperLink>
在访问网页B的那一刻,我无法看到的文字在法国再和文本的链接应用英语(默认值)。 奇怪的东西是如果我在浏览器中直接打开页面B的文字显示在法语。
所以我调试的Global.asax.cs中,我发现了在点击与GetRouteUrl的VAR Thread.CurrentThread.CurrentCulture
和CurrentUICulture
是英文,而不是法语作为我的web.config创建链接的时刻。
我的问题是:
- 什么能在这里是什么问题?也许是一个错误?
- 任何想法如何解决它?
我用尽了想法,最后想到的是在Global.asax.cs中强制使用Thread.CurrentThread.CurrentCulture
使用Web.Conf中的值。
请让我知道你的想法。谢谢!
网页A:
<asp:Literal ID="uxLatestGuides"
runat="server"
Text="<%$ Resources:Global, LatestGuides %>" />
网页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>