我有一个支持4种不同语言的应用程序(asp.net 3.5)。除了其他文化变化外,日期格式必须与报告页面上的当前文化相匹配。
我们设置每个文本框的日期格式,如:
string date = DateTime.Today.ToString("d"); //returns the date portion only
textbox1.Text = date;
textbox2.Text = date;
etc...
当用户选择西班牙语或英国英语时,格式应为dd / mm / yyyy。但是,然后我导航到以mm / dd / yyyy显示的页面。回发后,它显示dd / mm / yyyy。在另一次回发后,它会切换到mm / dd / yyyy格式,然后开启。
我已通过此调试,我发现应用程序的文化正确,日期格式正确地返回给我,但是当它显示时,它显示不正确。
有没有人见过这个或知道发生了什么?
答案 0 :(得分:0)
如果您只更改一个页面的文化,您应该覆盖问题中的aspx页面的InitializeCulture
:
protected override void InitializeCulture()
{
// set your culture, or pick it from maybe the Request object
string selectedLanguage = "en-US";
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
base.InitializeCulture();
}
如果您想为整个应用设置文化,请在global.asax中使用Application_BeginRequest
。
void Application_BeginRequest(Object sender, EventArgs e)
{
string selectedLanguage = "en-US";
Thread.CurrentThread.CurrentCulture = CultureInfo.CreateSpecificCulture(selectedLanguage);
Thread.CurrentThread.CurrentUICulture = new CultureInfo(selectedLanguage);
}
您当然会将en-US更改为您的用户的正确文化。