В моей модели есть поле даты и времени:
public DateTime ProjectStart { get; set; }
Если я хочу, чтобы время отображалось в 24-часовом формате в виде обычного текста на виде, я могу сделать это (с большой буквы ЧЧ):
@Model.ProjectStart.ToString("dd/MM/yyyy HH:mm")
Но как мне контролировать формат времени в поле ввода?
<input asp-for="ProjectStart" class="form-control" />
Время сохраняется в базе данных в 24-часовом формате. Это просто поле ввода, которое отображает его неправильно. Дата и время должны отображаться в следующем формате:
дд / мм / гггг ЧЧ: мм (например, 28/02/2019 17:45)
Культура моего приложения(CultureInfo.CurrentCulture
) - nb-NO
, что правильно. Стандартный формат даты и времени в этой культуре - это тот, который я пытаюсь отобразить в полях ввода. ( Норвежские форматы даты и времени )
ОБНОВЛЕНИЕ
Я попробовал два решения, но не повезло:
Украшениесвойство в viewmodel:
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy HH:mm}")]
Добавление атрибута помощника тега asp-format
во входной тег:
<!-- I tried several variations of this: -->
<input asp-for="ProjectStart" asp-format="{0:dd/MM/yyyy HH:mm}" class="form-control" />
<input asp-for="ProjectStart" asp-format="{0:dd.MM.yyyy HH:mm}" class="form-control" />
<input asp-for="ProjectStart" asp-format="{0:dd-MM-yyyy HH:mm}" class="form-control" />
Оба решения просто очистили значение в поле ввода, отображая только"мм / дд / гггг -: - -", т.е. формат не был изменен, а данные исчезли.
ОБНОВЛЕНИЕ 2
ЭтоHTML-код входного тега с атрибутом asp-format
:
<input class="form-control"
type="datetime-local"
data-val="true"
data-val-required="The Starttidspunkt field is required."
id="ProjectStart"
name="ProjectStart"
value="12.10.2019 07:12" />
Как видите, формат правильный, и данные есть. Но в моем браузере средство выбора даты отображает "мм / дд / гггг -: - -".