为什么我的日期输入没有读取模型值?
我是一个服务器方面的人试图教自己一点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"
属性并使用了正确的格式。
附注:
- HTML5日期选择器仅在最新版本的Chrome中受支持
- 使用
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") })%>