2010-10-08 76 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