Ответ 1
Используйте DisplayFormatAttribute, чтобы указать формат, когда отображается значение. Кроме того, вы можете создать два DisplayTemplates, Date и DateTime и использовать UIHintAttribute для указания шаблона
У меня есть мое поле модели, оформленное следующим образом:
[DataType(DataType.Date)]
[Display(Name = "Date of birth")]
public string DateOfBirth { get; set; }
Когда я хочу отобразить значение в представлении, используя следующий код:
<%: Html.DisplayFor(m => m.DateOfBirth) %>
Проблема заключается в том, что дата отображается вместе со значением времени. Интересно, почему он не учитывает атрибут DateType и отображает только значение даты без времени. Я знаю, что я могу создать шаблон отображения для DateTime, но в других случаях, кроме даты рождения, я хочу показать время вместе с датой. Как решить проблему?
Используйте DisplayFormatAttribute, чтобы указать формат, когда отображается значение. Кроме того, вы можете создать два DisplayTemplates, Date и DateTime и использовать UIHintAttribute для указания шаблона
Проблема заключается в том, что вы используете строковое значение, а не DateTime.
измените свою модель:
[DataType(DataType.Date)]
[Display(Name = "Date of birth")]
public DateTime? DateOfBirth { get; set; }
DataType будет работать только в том случае, если он является типом DateTime, вы также получаете дополнительное преимущество в том, что он автоматически проверяет его как действительную дату при использовании DateTime. Если вы используете строку, вам нужно будет использовать средство проверки регулярных выражений, чтобы обеспечить правильную дату.
Это должно быть сделано для режима редактирования и отображения
[DisplayFormat(ApplyFormatInEditMode = true,DataFormatString = "{0:MM/dd/yyyy}")]
хотя, если это просто отображение, это может работать
[DisplayFormat(DataFormatString = "{0:d}")]
Вы можете использовать ToShortDateString() или ToLongDateString() для отображения только даты, например:
@Model.EventDate.ToShortDateString()
@Model.EventDate.ToLongDateString()
Если ваша дата имеет тип DateTime, а ToShortDateString()
или ToLongDateString()
по-прежнему не работают, проверьте, может ли ваш DateTime иметь значение null (DateTime?). Сделать это не обнуляемым может сделать свое дело.
используя @Value и ToShortDateString(), вы можете отображать только дату.
@Html.TextBoxFor(model => model.StartDate, "", new { id = "date", @class = "datepicker", @style = "width:70%; height:30px;", @placeholder = "Enter Date", @Value = @Model.StartDate.ToShortDateString()})
Если вы используете MVC, возможно, вы можете попробовать это на своем клиентском скрипте:
@{
string birthDateOnly = Model.DateOfBirth.Date.ToShortDateString();
}
@Html.DisplayTextFor(m => birthDateOnly)