2010-06-11 4 views
0

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

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

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

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

etc... 

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

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

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

+0

Вы процитировали формат «dd/mm/yyyy» 4 раза, утверждая, что он переключается ... можете ли вы проверить точные данные? Трудно диагностировать проблему без фактов :) –

+0

Я думаю, вы хотели набрать mm/dd/yyyy несколько раз там. –

+0

Извините ... Не знаю, как я это сделал. Теперь должно быть лучше. Получил немного впереди себя ... – AWinters

ответ

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

Смежные вопросы