使用@Html.EditorFor(m => m.DateModified),否则DisplayFormat属性将不起作用。
要添加其他属性,如CSS类,您需要为DateTime创建一个编辑器模板。
创建一个名为EditorTemplates/DateTime.cshtml的文件,并使用以下内容:
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new
{
@class="date"
})
请注意,文本框的值不是直接使用模型设置的,而是使用
TemplateInfo.FormattedModelValue设置的,因为该值将根据DisplayFormat属性进行格式化,而模型则不会。(这让我花费了相当长的时间来意识到。:))
在简单情况下,这可能已经足够了,例如如果所有日期编辑器的CSS类可以相同。
如果您想参数化属性,也可以这样做,将属性值参数传递给EditorFor。
@Html.EditorFor(m => m.DateModified, new { @class = "someClass" })
然而,这个参数不会自动地作为属性委派给HTML控件,而是需要在模板中显式地“处理”它。根据我的经验,您可以在模板的ViewData中访问此参数值,因此参数化模板如下:
@Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue, new
{
@class=ViewData["class"]
})