Почему Razor TextBoxFor (с аннотацией даты) не отображает существующее значение даты и времени? - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть следующее поле даты и времени

    [DisplayName("Expiry Date")]
    [DataType(DataType.DateTime)]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
    public DateTime ExpiryDate { get; set; }

И затем я отображаю это так (верхняя строка - это я проверяю, у меня действительно есть значение для ExpiryDate - оно отображается так, как я ожидал)

<div>
     Current value: @Model.ExpiryDate.ToShortDateString()
     @Html.TextBoxFor(model => model.ExpiryDate, "{0:dd/MM/yyyy}" , new { type = "date", @class = "form-control" })
</div>

Средство выбора даты (в Chrome) работает правильно для выбора даты - я могу выбрать дату, и она правильно связывается с моей моделью при отправке.Это также работает нормально, когда ExpiryDate не имеет значения, отображая «dd / mm / yyyy»

Но когда ExpiryDate имеет значение, текстовое поле по-прежнему отображает dd / mm / yyyy, а не 22/02 /2019 или любое другое значение

Как ни странно, текстовое поле, кажется, имеет правильное значение, когда я проверяю сгенерированный HTML, как показано ниже:

<input class="form-control" data-val="true" data-val-date="The field Expiry Date must be a date." data-val-required="The Expiry Date field is required." id="ExpiryDate" name="ExpiryDate" type="date" value="22/02/2019">

Я также пытался явно включить значение,включая @value = Model.ExpiryDate.ToShortDateString() в атрибуты HtmlAttributes, что не имеет значения (не то, что я особенно ожидал этого, поскольку значение уже правильное)

Чего мне не хватает?

1 Ответ

0 голосов
/ 22 февраля 2019

Хотя я не тестировал, я думаю, что проблема заключается в том, что значение должно соответствовать не вашему формату отображения, а стандарту для HTML, поэтому назначение «22.02.2009» должно работать (в ASP.NET вы, вероятно,необходимо использовать InvariantCulture при назначении для преобразования значения).

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