如何使用 DataType.Date 数据注释在视图中显示日期时间?

How do I show the DateTime in the view using the DataType.Date data annotation?

我在从我的模型中获取 DateTime 对象以显示在日期时间选择器中时遇到问题。 最初,我使用 DisplayFormat DataAnnotation 将其视为具有特定格式的文本。

我尝试添加 DataType DataAnnotation。 我尝试添加必需的 DataAnnotation 我尝试将 DisplayFormat 更改为 dd/MM/yyyy.

我已经看过 datatype.date annotation not showing calendar in 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">

我不确定我是否遗漏了其他任何东西。

进一步测试日期格式后,没想到浏览器期望日期值是"yyyy-MM-dd"的形式。

DataFormatString 值从我当前使用的格式更改为 "yyyy-MM-dd" 后,日期选择器能够显示正确的日期。