【发布时间】:2011-02-17 11:31:56
【问题描述】:
我有一个带有语言选择器下拉列表的母版页
它有多个使用母版页的子页面,但是在子页面中(我创建了一个 basePage 类,然后让页面继承自该类),我覆盖了 initializeCulture。 像这样:
protected override void InitializeCulture()
{
String selectedLanguage = Common.SessionManager.Language;
if (selectedLanguage == "")
{
selectedLanguage = ConfigurationManager.AppSettings.Get("defaultLanguage");
}
if (selectedLanguage == "")
{
selectedLanguage = "nl-BE";
}
UICulture = selectedLanguage;
Culture = selectedLanguage;
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
base.InitializeCulture();
}
在下拉列表的 SelectedIndexChanged 事件中,我在会话中设置了新语言 像这样:
protected void LanguageSelectorSelectedIndexChanged(object sender, EventArgs e)
{
string sCulture = LanguageSelector.SelectedValue;
Common.SessionManager.Language = sCulture;
}
但是 initializeCulture 已经被触发了。
所以我有一种延迟效果,页面加载以前的语言,并且在下一次回发时它的翻译正确。
我无法再次调用 initializeCulture,因为我在母版页上,并且无法访问子页面的 basePage 类。
有人知道如何解决这个问题吗?
【问题讨论】:
标签: c# asp.net c#-4.0 internationalization event-handling