Укажите формат тега asp-for HTML (ASP.NET Core)

В проекте ASP.NET Core я должен отображать дату (только для чтения) в определенном формате (скажем, «дд/мм/гггг ЧЧ:ММ»)

<div class="form-group">
    <label asp-for="Date" class="col-md-2 control-label"></label>
    <div class="col-md-10">
        <input asp-for="Date" readonly class="form-control" />
    </div>
</div>

Как мне это сделать, зная, что поле Date объявлено в модели вот так

public DateTime Date { get { return this.Timestamp.DateTime; } }

?


person serge    schedule 19.07.2017    source источник


Ответы (4)


Попробуй это.

<input asp-for="Date" asp-format="{0:dd/MM/yyyy HH:mm}" readonly class="form-control" />
person tsu1980    schedule 05.07.2018

Кроме того, вы можете украсить свойство DisplayFormatAttribute.

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy HH:MM}")]
public DateTime Date { get { return this.Timestamp.DateTime; } }

Разметку, которую вы имеете, не нужно будет менять.

person Will Ray    schedule 24.07.2017
comment
Я попробовал это и обнаружил, что он выдает ошибку, когда базовый тип данных не соответствует шаблону DataFormatString; то есть с форматом {дд/мм/гггг}, поскольку мои базовые данные были датой и временем с ЧЧ:ММ, я получил исключение - person RichyRoo; 03.10.2019

Если он доступен только для чтения, вы можете жестко закодировать как -

<input value="@Model.Date.ToString("dd/MM/yyyy HH:mm")" readonly class="form-control" />

Или отображать как текст

<div class="form-group">
    <label asp-for="Date" class="col-md-2 control-label"></label>
    <div class="col-md-10 form-control-static">
        @Model.Date.ToString("dd/MM/yyyy HH:mm")
    </div>
</div>
person Win    schedule 19.07.2017

Использование ASP.Core TagHelpers по вашему вопросу;

[DataType(DataType.Date)]
public DateTime Date { get { return this.Timestamp.DateTime; } }

отформатирует поля ввода в соответствии с вашими языковыми настройками. Я не нашел вспомогательного решения для тегов для любых других тегов, похоже на жесткое кодирование в соответствии с ответом Win.

person RichyRoo    schedule 03.10.2019