0

我有一个支持 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 格式并不断地打开。

我已经对此进行了调试,我发现应用程序的文化是正确的,并且日期格式正确返回给我,但是当它显示时,它显示不正确。

有没有人见过这个或知道发生了什么?

4

1 回答 1

0

如果您仅更改一页的文化,则应覆盖InitializeCulture有问题的 aspx 页面:

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();
}

如果您想为整个应用设置文化,请Application_BeginRequest在 global.asax 中使用。

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 更改为适合您用户的文化。

于 2010-06-11T19:28:07.893 回答