我正在尝试正确显示(可为空)Date-type-only字段。对于此字段,我的Model和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" })
...但这产生了错误。
有没有更好的方法来实现这一目标?
答案 0 :(得分:2)
嗯,首先,您没有使用数据注释。像...
% 310 inferences, 0.001 CPU in 0.001 seconds (99% CPU, 591031 Lips)
N = 14,
M = 113634 ;
% 331 inferences, 0.001 CPU in 0.001 seconds (100% CPU, 457731 Lips)
N = 15,
M = 310572 ;
% 352 inferences, 0.001 CPU in 0.001 seconds (100% CPU, 310880 Lips)
N = 16,
M = 853467 ;
% 373 inferences, 0.001 CPU in 0.001 seconds (100% CPU, 703349 Lips)
N = 17,
M = 2356779 ;
...
之类的东西本身没有做任何事情。使用编辑器模板(DataType.Date
),它可用于提供Html.EditorFor
类型输入,但如果您使用date
,则基本上会忽略它。
您可以通过1)使用Html.TextBoxFor
代替或2)明确设置类型来解决此问题:Html.EditorFor
。
答案 1 :(得分:0)
这是解决方案:
@Html.TextBoxFor(m => m.PeriodEnd, "{0:M/d/yyyy}", new { @class = "datepicker" })
感谢大家的反馈!