我在我的模型上使用 DataType.Date 属性,在我的视图中使用 EditorFor。这在Internet Explorer 8和Internet Explorer 9中运行良好,但在Google Chrome中,它显示了一个日期选择器,而不是显示值,它只是以褪色的灰色文本显示“月/日/年”。
为什么谷歌浏览器不显示该值?
模型:
[DataType(DataType.Date)] public Nullable<System.DateTime> EstPurchaseDate { get; set; }
看法:
<td class="fieldLabel">Est. Pur. Date</td> <td class="field">@Html.EditorFor(m=>m.EstPurchaseDate)</td>
当您在 ASP.NET MVC 4 中使用默认模板装饰模型属性时,[DataType(DataType.Date)]会生成一个输入字段type="date":
[DataType(DataType.Date)]
type="date"
<input class="text-box single-line" data-val="true" data-val-date="The field EstPurchaseDate must be a date." id="EstPurchaseDate" name="EstPurchaseDate" type="date" value="9/28/2012" />
支持 HTML5 的浏览器(例如 Google Chrome)使用日期选择器呈现此输入字段。
为了正确显示日期,该值的格式必须为2012-09-28. 引用规范:
2012-09-28
value: [RFC 3339] 中定义的有效完整日期,附加条件是年份部分是四位或更多位,表示大于 0 的数字。
DisplayFormat您可以使用以下属性强制执行此格式:
DisplayFormat
[DataType(DataType.Date)] [DisplayFormat(DataFormatString = "{0:yyyy-MM-dd}", ApplyFormatInEditMode = true)] public Nullable<System.DateTime> EstPurchaseDate { get; set; }