【发布时间】:2019-02-22 14:55:27
【问题描述】:
我有以下日期时间字段
[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">
我也尝试过在 HtmlAttributes 中显式包含该值,包括 @value = Model.ExpiryDate.ToShortDateString(),这没有区别(不是我特别期望它,因为该值已经正确)
我错过了什么?
【问题讨论】:
-
当您使用 HTML5 中的
date时,我认为您需要查看 stackoverflow.com/questions/7372038/… 例如;基本上数据格式是硬编码的,呈现格式是客户特定的
标签: c# asp.net-mvc razor