Model DataAnnotation [DataType(DateType.Date)] 呈现 DatePicker 但隐藏了我的值?

Model DataAnnotation [DataType(DateType.Date)] renders DatePicker but hides my value?

我的 INV_Assets 模型中有 3 个日期字段:acquired_datedisposed_datecreated_date。我让它们在某些 @Html.EditorFor() 中显示为格式 MM/dd/yyyy

我现在想做的是添加一个简单的日期选择器功能,这是我遇到 THIS post 关于在我的模型属性上使用 [DataType(DataType.Date)] 属性的地方。我的 created_date 当前设置为:

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

这会呈现下拉功能,但框中的值与 "mm/dd/yyyy" 完全相同,而不是显示实际值。例如,如果我删除 [DataType(DataType.Date)] 属性:

    [Required]
    [DisplayFormat(DataFormatString = "{0:MM/dd/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime created_date { get; set; }

我的值显示为“02/10/2015”,没有日期选择器功能。

任何人都可以提供一个示例,说明我如何呈现此日期选择器功能,但在框中显示我的字段的实际值(当存在值时)吗?


编辑: 我视图中的 created_date 字段当前定义如下(根据 Chris 的建议,我试图强制该值采用 YYYY-MM-DD 格式):

    <div class="form-group">
        @*@Html.LabelFor(model => model.created_date, htmlAttributes: new { @class = "control-label col-md-2" })*@
        <span class="control-label col-md-2">Created Date:</span>
        <div class="col-md-10">
            @Html.EditorFor(model => model.created_date, new { htmlAttributes = new { @class = "form-control", @Value = Model.created_date.ToString("YYYY-MM-DD") } })
            @Html.ValidationMessageFor(model => model.created_date, "", new { @class = "text-danger" })
        </div>
    </div>

这会呈现以下代码:

<input value="YYYY-02-DD" class="form-control text-box single-line" data-val="true" data-val-date="The field created_date must be a date." data-val-required="The created_date field is required." id="created_date" name="created_date" type="date">

我假设您也在使用 HTML 5 date 输入类型,即 <input type="date">。日期输入类型的值必须是 ISO 格式的日期:YYYY-MM-DD。你看到的占位符只是浏览器提供了一个更友好的显示,但它在幕后转换 to/from ISO 格式。如果您没有提供正确的 ISO 日期,那么它基本上会被浏览器视为没有价值。

这对我有用

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

遵循 Chris Pratt 的想法