Почему DisplayFormat с DataFormatString изменяет "/" (слэш) на "-" (тире)?
Я использую следующий код
// Model
[DisplayFormat(
ApplyFormatInEditMode = true,
DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime StartDate { get; set; }
// View
@Html.EditorFor(model => model.StartDate)
для форматирования StartDate
, но результат xx-xx-xxxx
вместо xx/xx/xxxx
. Как я могу решить эту проблему и всегда использовать формат xx/xx/xxxx
?
UPDATE:
Изменение культуры до en-US
похоже на работу:
var culture = new CultureInfo(userCulture);
System.Threading.Thread.CurrentThread.CurrentCulture = "en-US";
System.Threading.Thread.CurrentThread.CurrentUICulture = "en-US";
но этот не является решением, потому что я могу использовать другую культуру, и я все же хочу показать дату по-другому.
Если текущая культура сообщает, что дата должна отображаться dd-MM-yyyy
, то использование DisplayFormat
, как указано выше, не имеет эффекта, а даты не отображаются как dd/MM/yyyy
.
Ответы
Ответ 1
Используйте DataFormatString = @"{0:dd\/MM\/yyyy}"
вместо этого. Поскольку /
идентифицирует символ, который должен быть заменен разделителем дат по умолчанию для текущей культуры, вам нужно сбежать от него, чтобы он использовался как литерал в формате.
Таким образом, у вас есть фиксированный формат, а не тот, который динамически использует разделитель дат текущей культуры.
Альтернативой избежать символа /
может быть: DataFormatString = "{0:dd'/'MM'/'yyyy}"
Ответ 2
Измените формат коротких дат для региональных настроек сервера, чтобы использовать косые черты, например. yyyy/MM/dd
.
Это решило проблему для меня.
Ответ 3
Можете ли вы изменить его на DataFormatString = "{0:d}"
Это должно дать вам краткий шаблон даты в мм/дд/год