为什么我的日期输入没有读取模型值?

我是一个服务器方面的人试图教自己一点CSS,Javascript,jQuery等。我写了一个小测试项目,加载模型并在简单的文本框中显示值。 正常工作,你可以看到:

在此处输入图像描述

但是,当然,我想适当地显示这些日期。 那么让我将这些输入类型更改为“date”。 这是Razor代码:

@Html.TextBoxFor(m => m.Date, new { @type="date", @id="ondate" }) 

嗯,那工作….有点。 我的意思是,它现在显示为日期选择器……但它不再显示模型的日期!

在此处输入图像描述

我究竟做错了什么?

type="date"属性呈现浏览器HTML5 datepicker。 为了使其正常工作,格式需要为yyyy-MM-dd (ISO格式),因此需要

 @Html.TextBoxFor(m => m.Date, "{0:yyyy-MM-dd}", new { @type="date" }) 

或者,您可以在属性上设置数据属性

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

并使用

 @Html.EditorFor(m => m.Date) 

它添加了type="date"属性并使用了正确的格式。

附注:

  1. HTML5日期选择器仅在最新版本的Chrome中受支持
  2. 使用EditorFor() (在MVC-4中)将不允许您设置id属性,但不清楚为什么需要将默认id="Date"更改为id="ondate"

试试这个:

 <%= Html.TextBoxFor(m => m.Date, new { @type = "date", @id = "ondate", @value = Model.Date.ToString("mm/dd/yyyy") })%>