MVC 4 Razor添加输入类型日期

Gee*_*nga 32 html5 razor asp.net-mvc-4

我想知道如何插入<input type="date"/>我的模型的日期时间属性.至于现在,Razor创建了一个普通的输入元素type="datetime".我想利用HTML5的新输入类型.

Gil*_*rts 42

输入日期值格式需要根据http://tools.ietf.org/html/rfc3339#section-5.6完整日期指定的日期.

所以我最终做了:

<input type="date" id="last-start-date" value="@string.Format("{0:yyyy-MM-dd}", Model.LastStartDate)" />
Run Code Online (Sandbox Code Playgroud)

我确实试过"正确"使用:

[DataType(DataType.Date)]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:yyyy-MM-dd}")]
public DateTime LastStartDate
{
    get { return lastStartDate; }
    set { lastStartDate = value; }
}
Run Code Online (Sandbox Code Playgroud)

@Html.TextBoxFor(model => model.LastStartDate, 
    new { type = "date" })
Run Code Online (Sandbox Code Playgroud)

不幸的是,似乎总是将输入的value属性设置为标准日期时间,所以我最终直接应用了上面的格式.

编辑:

根据Jorn的说法,如果你使用

@Html.EditorFor(model => model.LastStartDate)
Run Code Online (Sandbox Code Playgroud)

而不是TextBoxFor它一切正常.

  • +1实际上,似乎在属性上使用这些数据注释,`Html.EditorForm(m => m.LastStartDate)`呈现`<input type = date>`.因此,无需覆盖`type`属性. (3认同)

Gee*_*nga 31

我设法通过使用以下代码来完成它.

@Html.TextBoxFor(model => model.EndTime, new { type = "time" })
Run Code Online (Sandbox Code Playgroud)