Asp.net 更改站点上的区域性和ui区域性只会更新一个字段

Asp.net 更改站点上的区域性和ui区域性只会更新一个字段,asp.net,.net,locale,culture,uiculture,Asp.net,.net,Locale,Culture,Uiculture,我遇到一个问题,即通过执行按钮单击来动态更改网站上的语言()来更改区域性和UI区域性不会基于以下App_LocalResources文件的回退更改“所有”我的resx字段(只有一个字段因某种原因而更改): Site.Master.resx Site.Master.fr.resx Site.Master.zh.resx 但是,只有在调整浏览器的语言首选项并刷新页面时,上述操作才能正常工作 内容分别为: header.Text Localisation and Globalisation Test

我遇到一个问题,即通过执行按钮单击来动态更改网站上的语言()来更改区域性和UI区域性不会基于以下App_LocalResources文件的回退更改“所有”我的resx字段(只有一个字段因某种原因而更改):

Site.Master.resx
Site.Master.fr.resx
Site.Master.zh.resx
但是,只有在调整浏览器的语言首选项并刷新页面时,上述操作才能正常工作

内容分别为:

header.Text Localisation and Globalisation Test Website
login.Text  Log In
logout.LogoutText   Log Out
menuItemAbout.Text  About
menuItemHome.Text   Home

header.Text Localisation et mondialisation test Site Web
login.Text  Se Connecter
logout.LogoutText   Se Déconnecter
menuItemAbout.Text  à propos
menuItemHome.Text   maison

header.Text 本地化和全球化测试网站
login.Text  登入
logout.LogoutText   Log Out
menuItemAbout.Text  关于我们
menuItemHome.Text   登出
什么不起作用代码段:

<h1 runat="server" enableviewstate="false">
    <asp:Localize runat="server" ID="header" meta:resourcekey="header" />
</h1>
Web.config条目:

<globalization culture="auto" uiCulture="auto" enableClientBasedCulture="true" />


我需要帮助弄清这个问题的真相。如果您看到该网站,只有右上角的登录链接在单击按钮时发生更改。

我不希望它工作。您仅从单击按钮的执行点更改当前线程的区域性和uiculture。在按钮单击事件之前处理的任何内容都不会生效。不要这样做,而是使用所选区域性设置cookie,然后将页面重定向回自身。在oninit事件中检查cookie,如果找到,请更改区域性以匹配cookie值。

Hi Mark,现在就像一个符咒。使用cookie存储首选语言,并在init上重新加载页面,星星已对齐,以使我的一天。谢谢
protected void btnEnglish_Click(object sender, EventArgs e)
{
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("en-US");
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("en-US");
    InitializeCulture();
}

protected void btnFrench_Click(object sender, EventArgs e)
{
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("fr");
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("fr");
    InitializeCulture();
}

protected void btnChinese_Click(object sender, EventArgs e)
{
    Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("zh");
    Thread.CurrentThread.CurrentUICulture = CultureInfo.GetCultureInfo("zh");
    InitializeCulture();
}
<globalization culture="auto" uiCulture="auto" enableClientBasedCulture="true" />