Почему мой формат даты ASP.Net меняется хаотично? - PullRequest
2 голосов
/ 08 октября 2010

У меня есть asp.net 4.0 Formview, привязанный к SqlDataSource, размещенному на 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")) %>

Но это не должно быть необходимым. Спасибо за любую помощь.

1 Ответ

1 голос
/ 09 октября 2010

Вместо использования {0:d} и в зависимости от культуры для форматирования даты, вы можете попробовать принудительно ввести дату в желаемое форматирование. Пример:

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