为什么我的日期输入没有读取模型值?
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"
属性并使用了正确的格式。
旁注:
- HTML5 日期选择器仅在 Chrome
的最新版本中受支持
- 使用
EditorFor()
(在 MVC-4 中)不允许您设置 id
属性,但不清楚为什么需要更改
默认 id="Date"
到 id="ondate"
我是一名服务器端人员,试图自学一些 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"
属性并使用了正确的格式。
旁注:
- HTML5 日期选择器仅在 Chrome 的最新版本中受支持
- 使用
EditorFor()
(在 MVC-4 中)不允许您设置id
属性,但不清楚为什么需要更改 默认id="Date"
到id="ondate"