2010-10-08 75 views
2

我有一個asp.net 4.0 FormView控件綁定到一個SqlDataSource,託管在IIS7,和我在顯示日期爲編輯這樣的:爲什麼我的ASP.Net日期格式更改不正確?

<input id="OrderDateTextBox" type="text" value='<%# Eval("OrderDate", "{0:d}") %>' /> 

這通常工作正常,但偶爾的日期格式顯示d/m/y而不是m/d/y。發生這種情況時,頁面刷新將顯示正確的日期格式。

到目前爲止,我已經嘗試設置默認文化在web.config中像這樣:

<globalization enableClientBasedCulture="false" culture="en-US" uiCulture="en-US" /> 

我也試着設置在初始化文化:

protected override void InitializeCulture() 
{ 
    UICulture = "en-US"; 
    Culture = "en-US"; 
    Thread.CurrentThread.CurrentCulture = 
     CultureInfo.CreateSpecificCulture("en-US"); 
    Thread.CurrentThread.CurrentUICulture = 
     new CultureInfo("en-US"); 

    base.InitializeCulture(); 
} 

無論這些方法似乎有任何影響。但是,如果通過使用以下語法拉入數值,則日期格式始終是正確的:

<%# DateTime.Parse(Eval("OrderDate").ToString()).ToString("d", CultureInfo.CreateSpecificCulture("en-US")) %> 

但是這不應該是必需的。謝謝你的幫助。

+0

你確定這些是隨機的嗎?你見過的事件有什麼共同點? – Oded 2010-10-08 18:31:06

+0

好吧,它似乎發生在閒置期之後,也許在會話過期後? – Sprockincat 2010-10-08 19:06:17

回答

0

而不是使用{0:d},並根據不同的文化來格式化日期,您可以嘗試強制日期進入你想要的格式。例如:

<%# Eval("OrderDate", "{0:MM/dd/yyyy}") %> 
+0

這很有效!我仍然想知道爲什麼有必要這樣做,以防文化影響其他設置,但這有助於。謝謝! – Sprockincat 2010-10-13 19:36:17

+0

我不是.NET文化變化的專家,但我知道如何格式化日期。很高興這有助於你! – ChessWhiz 2010-10-13 21:40:46