我正在尝试正确显示(无效)仅日期型字段。对于此字段,我的模型和ViewModel类被定义为....
[DisplayFormat(DataFormatString = "{0:M/dd/yyyy}")]
[DataType(DataType.Date)]
public DateTime? PeriodEnd { get; set; }
在我的详细信息视图(基于模型)中,它正确地显示了日期(不包括时间元素):
@Html.DisplayNameFor(model => model.PeriodEnd)
问题:在我的编辑视图(基于ViewModel)中,它也显示了我要排除的时间。这是定义的方式。
@Html.TextBoxFor(model => model.PeriodEnd, new { @class = "datepicker" })
我也尝试了....
@Html.TextBoxFor(model => model.PeriodEnd.Value().ToShortDateString(),
new { @class = "datepicker" })
...但这产生了错误。
有更好的方法可以实现这一目标?
好吧,首先,您不是使用数据注释。诸如DataType.Date
之类的事情自己没有做任何事情。使用编辑模板(Html.EditorFor
),可以使用date
类型输入,但是如果您使用Html.TextBoxFor
,则基本上被忽略了。
您可以通过1)使用Html.EditorFor
而不是修复该方法或2)明确设置类型:@Html.TextBoxFor(m => m.PeriodEnd, new { type = "date", @class = "datepicker" })
。
这是解决方案:
@Html.TextBoxFor(m => m.PeriodEnd, "{0:M/d/yyyy}", new { @class = "datepicker" })
感谢您的反馈!