2011-07-05 2 views
0

私のモデルでは、私はpublic DateTime Date {get;set;}のプロパティを持っているとしましょう。ビュー上では、日付用とタイム用の2つのテキストボックスで表現する必要があります。同じDateTime値に異なるEditorTemplatesを使用することはできませんか?

私は2つの異なるエディタテンプレート

DateTime.cshtml作成:ビュー

@Html.EditorFor(x => x.Date) 
@Html.EditorFor(x => x.Date,"TimeOnly") 

@model DateTime? 
@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortDateString() : string.Empty), new { @class = "datePicker", style = "width:90px" }) 

とTimeOnly.cshtml

@model DateTime? 
@Html.TextBox("", (Model.HasValue ? Model.Value.ToShortTimeString() : string.Empty), new { @class = "timePicker", style = "width:90px" }) 

そしてEditorForフィールドを

問題は、コントローラに渡されるDateプロパティの実際の値が、デフォルトの時刻12:00であることです。 EditorForフィールドの順序を変更すると、同じことが起こります。TimeOnlyテンプレートが適用された直後のDate部分は、Time部分が正しいままですが、ロールバックされます。再び

ビュー自体に値はOKですが、上のそれはどちらか、正しい日付とデフォルトの時間とその逆で、コントローラにデフォルト値を渡す提出する(それが最初に使用されたテンプレート依存)

もちろんは、私がモデルに別のプロパティを追加するだけでいつでも日付と時刻を分けることができますが、よりよい解決策がありますか?

答えて

1

Scott Hanselmanはこの場合にcustom model binderをどのように使用できるかについてブログを付けました。

+1

今私はそれを言うつもりだ:ダーリン、私はあなたが実際の生きている人だとは思わない。それはできません。私はあなたがおそらくGoogleのために働いている惑星のいくつかの賢い人々のコラボレーションで作成されたボットだと思う。常に正しい答えを出すのは不可能です。あなたは私を驚かせている。 – Agzam

+1

@Agzam、私はちょうどStackOverflowにインターネット上に散在している情報の広大な海を集約するために私の経験を使用しています:-)これは、私が以前のプロジェクトでここで尋ねられた質問の大部分を辿ったので、明らかです。 –

関連する問題