Как предварительно заполнить поле ввода 'date' значениями Razor / C # - PullRequest
0 голосов
/ 18 декабря 2018

У меня есть ввод типа 'date', и я пытаюсь получить код Razor, чтобы предварительно заполнить дату информацией, которая уже есть на сервере, потому что она предназначена для поля Edit в приложении MVC ASP.NET Core.Я работаю на.

Код, который я использую:

<input type="date" name="DeliveredDate" id="DeliveredDate" value='@Model["order"].DeliveredDate.ToString("mm/dd/yyyy")'>

Я могу получить код для отображения строки в любой другой части страницы, но есть ли хитрость для получения этой же строкизаполнить значение поля даты?Все мои поиски в Google не нашли ничего особенно полезного.

Ответы [ 2 ]

0 голосов
/ 18 декабря 2018

Правильная команда в итоге оказалась

@Model["order"].DeliveredDate.ToString("yyyy-MM-dd") 

, но потом я узнал от своего инструктора, что есть диапазон дат, который можно отображать, и он меняется на разных платформах, но я уверен,диапазон, который может отображаться, находится между 1950 и 2049 годами.

Как только я на самом деле установил даты, которые он должен был отображать, на те, которые были в этом диапазоне, это сработало, и если я попытался отобразитьдата за пределами этого диапазона, он снова сломается.

0 голосов
/ 18 декабря 2018

Для этого можно использовать помощник @Html.TextBox() или строго типизированный @Html.TextBoxFor(), установив DisplayFormatAttribute или формат даты непосредственно в помощнике:

Свойство Viewmodel

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

Просмотр

@Html.TextBox("DeliveredDate", Model["order"].DeliveredDate, "{0:MM/dd/yyyy}", new { type = "date" })

@Html.TextBoxFor(model => model.DeliveredDate, "{0:MM/dd/yyyy}", new { type = "date" })

Или использование EditorFor путем установки формата даты, к которому автоматически добавляется атрибут type = "date":

@Html.EditorFor(model => model.DeliveredDate)

Если вы используете тег-помощник, просто установите атрибут asp-for:

<input asp-for="DeliveredDate" type="date" />

Примечания:

1) Убедитесь, что вы уже установленызначение даты внутри действия контроллера, например, model.DeliveredDate = DateTime.Now (model имеет тип Model["order"]).

2) Последний подход требует установки DisplayFormatAttribute в свойстве viewmodel, поскольку нет параметра для форматирования строки для установкиформат из EditorFor или сам помощник по тегам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...