2

我有一个绑定到 SqlDataSource 的 asp.net 4.0 Formview,托管在 IIS7 上,我正在显示一个编辑日期,如下所示:

<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")) %>

但这不应该是必要的。谢谢你的帮助。

4

1 回答 1

1

您可以尝试将日期强制转换为您希望的格式,而不是使用{0:d}并取决于文化来格式化日期。例子:

<%# Eval("OrderDate", "{0:MM/dd/yyyy}") %>
于 2010-10-08T22:52:39.857 回答