我的模特有一个属性:
[Required]
[DataType(DataType.Date)]
public DateTime BirthDate { get; set; }
我使用EditorFor在我的(强类型)视图中显示:
<p>@Html.LabelFor(m => m.BirthDate)
@Html.EditorFor(m => m.BirthDate)
@Html.ValidationMessageFor(m => m.BirthDate)
</p>
呈现视图时,出生日期文本框显示“01.01.0001”,即DateTime默认值。如果未初始化BirthDate值,这是正确的,但是在这种情况下我希望文本框为空。
这样做的标准方法是什么?我不想使用Nullable&lt; DateTime&gt;在我的模型中,因为BirthDate是必需值。
答案 0 :(得分:2)
您最有可能找到DisplayFormat
属性。此外,除非您使用的是DateTime?
/ Nullable<DateTime>
,否则您可能会以1月1日结束(因为不能有空值)。
如果您决定使用DateTime?
/ Nullable<DateTime>
使用[Required]
强制执行某个值,请避免您所说的任何问题,所以如果那是您的犹豫,我就不会太担心了。
作为最后一种选择,您可以覆盖DateTime.cshtml
(或Date.cshtml
,因为您正在使用DataType
attribtue)模板(〜/ Views / Shared / DisplayTemplates /)并制作填充default(DateTime)
时,文本框为空。 e.g。
@model DateTime
@Html.TextBox(String.Empty, Model == default(DateTime) ? String.Empty : Model)
(或类似的东西)