Дата в текстовых полях меняется формат - PullRequest
0 голосов
/ 11 июня 2010

У меня есть приложение (asp.net 3.5), которое поддерживает 4 разных языка.Наряду с другими культурными изменениями форматы даты должны соответствовать текущей культуре на наших страницах отчетности.

Мы устанавливаем форматы даты каждого из текстовых полей, например:

string date = DateTime.Today.ToString("d"); //returns the date portion only

textbox1.Text = date;
textbox2.Text = date;

etc...

Когда пользователь выбираетИспанский или британский английский формат должен быть дд / мм / гггг.Однако затем я перехожу на страницу, которая отображается в мм / дд / гггг.После обратной передачи он отображает дд / мм / гггг.После другой обратной передачи он переключается в формат mm / dd / yyyy и включается и включается.

Я отлаживал это и вижу, что культура подходит для приложения и форматы даты возвращаются мне правильно,но когда он отображается, он отображается неправильно.

Кто-нибудь когда-либо видел это или знает, что происходит?

1 Ответ

0 голосов
/ 11 июня 2010

Если вы изменяете культуру только для одной страницы, вы должны переопределить 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 на правильную культуру для своих пользователей.

...