使用EditorFor显示默认值的空编辑器

时间:2013-07-16 12:23:23

标签: asp.net-mvc-4

我的模特有一个属性:

[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是必需值。

1 个答案:

答案 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)

(或类似的东西)