ASP.NET Атрибут MVC — DisplayFormat

#.net #asp.net-mvc-2 #data-annotations #editorfor #dataformat

#.net #asp.net-mvc-2 #данные-аннотации #редактор для #формат данных

Вопрос:

В моей модели у меня есть свойство myDate, которое имеет тип datetime. Я подписываю свойство атрибутом DisplayFormat в этом режиме:

 [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy hh:mm}")]
public DateTime MyDate { get; set; }
  

на мой взгляд:

 ...
<%= Html.EditorFor(model => model.Evento.MyDate)%>
...
  

почему, если значение свойства равно ‘2011-05-03 14:47’, на мой взгляд (в EditorFor), я вижу ‘05.03.2011 02.47’?

DataFormatString указан правильно!

большое спасибо за ответ

Alberto

Ответ №1:

Если я не ошибаюсь, строка формата {0:dd/MM/yyyy hh:mm} будет выводиться как 03/05/2011 02.47 . Вы видите то, что я ожидал увидеть.

ОБНОВЛЕНИЕ: Чтобы получить 24-часовую запись, вы можете использовать {0:dd/MM/yyyy HH:mm} заглавную HH для обозначения часа.

Комментарии:

1. моя проблема в том, что время отформатировано неправильно. Я ожидал, что в 14:47 не будет 02.47…

2. @Альберто Рубини: А, понятно. Я обновил свой ответ, чтобы отразить то, чего вы пытаетесь достичь. Надеюсь, у вас это сработает.

Ответ №2:

Это потому, что : это зарезервированный символ, указывающий разделитель времени для данного языка, который в вашем случае может оказаться . символом. Вы хотите:

 DataFormatString = @"{0:dd/MM/yyyy HH:mm}"
  

Возможно, вы также захотите использовать HH 24-часовой формат вместо hh .