Как культура глобализации влияет на даты MVC - PullRequest
0 голосов
/ 24 сентября 2018

У меня есть следующая модель:

public class Appointment
{
    [DataType(DataType.Date)]
    public DateTime Date { get; set; }
}

view:

@model ModelValidation.Models.Appointment
Appointment Date: @Html.EditorFor(m => m.Date)

и контроллер:

public ViewResult MakeBooking()
{
    return View(new Appointment { Date = DateTime.Now });
}

Я добавил это в Web.config:

  <system.web>
    ...
    <globalization culture="en-AU" uiCulture="en-AU"/>
  </system.web>

В результате получается следующее тело HTML:

Appointment Date: <input class="text-box single-line" 
data-val="true" data-val-date="The field Date must be a date." 
data-val-required="The Date field is required." 
id="Date" name="Date" type="date" value="25/09/2018" />

Текстовое поле на странице выглядит следующим образом:

enter image description here

Мой первый вопрос: почему вместо «25/09/2018» отображается «дд / мм / гггг»?

Когда я изменяю <globalization culture="en-AU" uiCulture="en-AU"/> на <globalization culture="en-US" uiCulture="en-US"/>Единственное отличие состоит в том, что HTML генерирует value="09/25/2018" вместо value="25/09/2018" Почему тогда он не отображает "мм / дд / гггг" в текстовом поле на веб-странице?

Я использую MVC5 и Chrome и нахожусьв Австралии.

1 Ответ

0 голосов
/ 25 сентября 2018

Атрибут [DataType(DataType.Date)] генерирует type="date" при использовании с EditorFor(), который, в свою очередь, генерирует средство выбора даты HTML5 в браузерах.

Спецификации HTML требуют, чтобы дата была в формате ISO, поэтому вам необходимодобавьте атрибут [DisplayFormat]

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

, и тогда дата будет отображаться в пользовательской культуре (которая является целью средства выбора даты HTML5).

В качестве альтернативы, вы можете использовать

@Html.TextBoxFor(m => m.Date, "{0:yyyy-MM-dd}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...