Как показать DateTime в представлении, используя аннотацию данных DataType.Date? - PullRequest
0 голосов
/ 03 октября 2019

У меня проблемы с получением объекта DateTime из моей модели для отображения в средстве выбора даты. Первоначально я обрабатывал его как текст с определенным форматом, используя DataFormat DataAnnotation.

Я попытался добавить DataType DataAnnotation. Я попытался добавить Обязательную аннотацию данных. Я попытался изменить DisplayFormat на dd / MM / yyyy.

Я видел аннотацию datatype.date, не отображающую календарь в Firefox , и протестировал последнюю версию. версия Chrome и Firefox.

Оригинал Billing.cs

[DataMember]
[Display(Name = "Start Date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy MMM dd}")]
public System.DateTime StartDate { get; set; }

Протестировано с Billing.cs

[DataMember]
[Display(Name = "Start Date")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
[DataType(DataType.Date), Required]
public System.DateTime StartDate { get; set; }

Edit.cshtml

<div class="form-group row">
    @Html.LabelFor(model => model.StartDate, htmlAttributes: new { @class = "col-form-label col-md-2" })
    <div class="col-md-10">
        @Html.EditorFor(model => model.StartDate, new { htmlAttributes = new { @class = "form-control" } })
        @Html.ValidationMessageFor(model => model.StartDate, "", new { @class = "text-danger" })
    </div>
</div>

Я ожидал увидеть дату в окне выбора даты. Но вместо этого я вижу местозаполнитель "dd / mm / yyyy".

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

<input class="form-control text-box single-line" data-val="true" data-val-date="The field Start Date must be a date." data-val-required="The Start Date field is required." id="StartDate" name="StartDate" type="date" value="01/01/2018">

Я не уверен, что я что-то упустил или нет.

1 Ответ

0 голосов
/ 03 октября 2019

После дальнейшего тестирования с форматом даты я не ожидал, что браузер ожидает, что значение даты будет иметь вид "yyyy-MM-dd".

После изменения значения DataFormatString из моего текущего используемогоотформатировать в "yyyy-MM-dd", средство выбора даты смогло показать правильную дату.

...