2010-06-11 72 views
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格式並繼續。

我已通過此調試,我看到文化是正確的應用程序和日期格式正確返回給我,但當它顯示時,它顯示不正確。

有沒有人見過這個或知道發生了什麼?

+0

你引用了「dd/mm/yyyy」格式4次,聲稱它正在切換......你能檢查確切的細節嗎?如果沒有事實,很難診斷出問題:) – 2010-06-11 16:30:06

+0

我想你應該在這裏輸入mm/dd/yyyy幾次。 – 2010-06-11 16:32:45

+0

對不起......不知道我是怎麼做到的。現在應該會更好。在我自己前面有一點點... – AWinters 2010-06-11 16:42:10

回答

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

如果你想設置文化爲整個應用程序,在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更改爲您的用戶的正確文化。