Каков правильный или лучший способ обработки форматов даты с помощью MVC / Razor для разных браузеров и стран? - PullRequest
0 голосов
/ 04 мая 2018

В моем приложении (MVC 5, начальная загрузка) у меня есть настройки по умолчанию из леса MVC.

Я хочу, чтобы даты отображались в формате дд / мм / гггг для пользователей из Великобритании. Это объявление модели данных / класса для даты и аннотаций:

[Required, DatabaseGenerated(DatabaseGeneratedOption.Computed)]
[DataType(DataType.Date)]
[Column(TypeName = "Date")]
[DisplayName("Invoice Date")]
public DateTime InvoiceDate { get; set; } 

Это нормально работает в Internet Explorer, но не в Firefox, Opera или Edge.

При редактировании этого параметра в последних трех датах просто отображается дд / мм / гггг в поле редактирования, предположительно, поскольку браузеры предоставляют свои собственные элементы управления редактированием и каким-то образом полагаются на конкретную форму. Я не уверен в этом ???

Я кое-что прочитал и добавил эту аннотацию к дате, которая, как говорили, решает эту проблему:

[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]

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

Затем, когда я вернулся к тестированию на IE, форматы даты теперь были неправильными.

Итак, мой вопрос: как вы правильно решаете эту проблему в MVC / razor в разных браузерах? Какой правильный или лучший метод практики?

И, конечно, каков наилучший метод борьбы с этим и обеспечения правильных форматов даты для культуры / страны пользователя и т. Д.?

Заранее спасибо.

Использование Bootstrap с привязкой в ​​mvc, EditorFor и т. Д., Например:

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

Я попробовал Bootstrap.v3.datetimepicker, но это не сработало в Firefox или Opera. Я, очевидно, хочу, чтобы средство выбора даты имело тот же внешний вид, что и другие компоненты начальной загрузки.

Любая помощь приветствуется.

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