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

Why is my date input not reading the model value?

我是一名服务器端人员,试图自学一些 CSS、Javascript、jQuery 等。我编写了一个加载模型的小测试项目并在简单的文本框中显示值。工作正常,如您所见:

当然,我想适当地显示这些日期。因此,让我将这些输入类型更改为 "date"。这是 Razor 代码:

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

好吧,那行得通……有点。我的意思是,它现在显示为日期选择器...但它不再显示模特的日期!

我做错了什么?

试试这个:

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

type="date" 属性呈现浏览器 HTML5 日期选择器。为了使其正常工作,格式需要为 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. 的最新版本中受支持
  3. 使用 EditorFor()(在 MVC-4 中)不允许您设置 id 属性,但不清楚为什么需要更改 默认 id="Date"id="ondate"