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<DateTime> 因为 BirthDate 是必需的值。

4

1 回答 1

2

您正在寻找DisplayFormat最有可能的属性。此外,除非您使用DateTime?/ ,否则您Nullable<DateTime>可能会以 Jan 1 结束(因为不能有空值)。

如果您确实决定使用DateTime?/Nullable<DateTime>执行价值 using[Required]应该避免您所说的任何问题,所以如果这是您的犹豫,我不会太担心。

作为最后的替代方案,您可以覆盖DateTime.cshtml(或者Date.cshtml因为您使用的是DataType属性)模板(~/Views/Shared/DisplayTemplates/)并在填充时使文本框为空default(DateTime)。例如

@model DateTime
@Html.TextBox(String.Empty, Model == default(DateTime) ? String.Empty : Model)

(或类似的规定)

于 2013-07-16T12:49:53.553 回答