0

次を使用してフォームに日付を表​​示するMVC3Webサイトがあります。

<div class="editor-label control-label">
     @Html.LabelFor(m => m.rrsfWoman.DateOfBirth)
</div>
<div class="editor-field controls">
     @Html.EditorFor(m => m.rrsfWoman.DateOfBirth)
     @Html.ValidationMessageFor(m => m.rrsfWoman.DateOfBirth)
</div>

生年月日は、rrsfWomanクラスで次のように定義されています。

public DateTime WomansDateOfBirth { get; set; }

私の問題は、生年月日フィールドのデフォルト値がMinDateであるためです。フィールドをnull許容にすることなく、日付の表示を1/01/0001として抑制する方法はありますか。

ありがとう

4

3 に答える 3

7

フィールドをnull許容にすることなく、日付の表示を1/01/0001として抑制する方法はありますか。

これを実現する正しい方法は、ビューモデルで日付をnull許容にすることです。後でそれを行わないと、null許容でないDateTimeフィールドを空の文字列にバインドできず、それを機能させるためにカスタムモデルバインダーなどを作成する必要があるため、モデルのバインドにも苦労します。ビューモデルを使用しないと、人生が悲惨になります。

そうは言っても、グッドプラクティスに反したい場合は、チェックを実行して空の値を使用するDateTimeタイプのカスタムエディターテンプレートを定義できますが、正直なところ、そうすることはお勧めしません。

~/Views/Shared/EditorTemplates/DateTime.cshtml

@model DateTime

@if (Model == default(DateTime))
{
    @Html.TextBox("", "")
}
else
{
    @Html.TextBox("", ViewData.TemplateInfo.FormattedModelValue)
}
于 2012-09-12T10:03:06.100 に答える
0

次のように、WomansDateOfBirthのデフォルト値を明示的に設定できます。

private DateTime _womansDateOfBirth = DateTime.Now;
public DateTime WomansDateOfBirth
{
    get { return _womansDateOfBirth; }
    set { _womansDateOfBirth = value; }
}

DateTime.NowMinDateはどこにありますか。

于 2012-09-12T10:06:11.427 に答える
0

日付フィールドでnullが許可されておらず、ユーザーに日付の入力を強制したい場合。IMO、最良の方法は、フォームの作成後に入力フィールドをクリアすることです。

したがって、この小さな切り取りを追加します-ビューの最後にそれを追加します。

<script type='text/javascript'>
    document.getElementById("DateOfBirth").value = "";
</script>
于 2014-09-30T15:30:21.967 に答える