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 の値が初期化されていない場合はこれで問題ありませんが、その場合はテキスト ボックスを空にする必要があります。

これを行う標準的な方法は何ですか?BirthDate は必須の値であるため、モデルで Nullable<DateTime> を使用したくありません。

4

1 に答える 1

2

DisplayFormat最も可能性の高い属性を探しています。また、DateTime?/を使用していない限り、Nullable<DateTime>おそらく 1 月 1 日になるでしょう (null 値はあり得ないため)。

DateTime?値を使用/Nullable<DateTime>強制することに決めた場合[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 に答える