2012-02-07 13 views
0

MVC3アプリケーションには、日付の入力が必要なフォームが多数あります。属性を使用してjQuery datetimepickerを設定する

与えられた日付の要件は、多くの場合、すなわち日付、ちょうど日付、過去の日付、過去の日付と時刻、将来の日付、日付将来の時間など...

したがって、私は必要なものに応じて異なるクラスを与えます。たとえば、....

$("input.input-date-past").datepicker({ numberOfMonths: 1, showButtonPanel: true, maxDate: -0 }); 

...ユーザーの選択肢を過去の日付に制限する日付選択ツールを設定します。

これはすべて問題なく動作していますが、より良い方法があるかどうかは疑問でした。

私は、ビューのモデルプロパティに、入力のタイプを定義する属性を与えることができると考えています。すなわちプロパティに指定された属性を問い合わせ、必要に応じてクラスを設定します@model System.DateTimeと共有/ EditorTemplate、に続い

[Required] 
[PastDate] 
public DateTime SomeDateFromThePast { get; set; } 

[Required] 
[FutureDate] 
public DateTime SomeDateFromTheFuture { get; set; } 

[Required] 
[FutureDateTime] // Requires a time to be given i.e "01/01/2012 09:00" 
public DateTime SomeDateTimeFromTheFuture { get; set; } 

etc.. 

いいですか?それとも悪臭か?

[OK]をクリックすると、プロパティに与えられた属性をどのように調べますか?

臭いがある場合は、他の提案はありますか?

ありがとう、

ETFairfax

+0

Francescoの素晴らしい[MVC Controls Toolkit](http://mvccontrolstoolkit.codeplex.com/wikipage?title=Data%20Annotations)は、DateRangeAttributeによってこれを行うことができます。私はフランチェスコに電子メールを送り、彼はおそらくチャイムに入るでしょう。 – RickAndMSFT

答えて

0

(あなたがGoogleで検索した場合のチュートリアルの数がある)は、カスタムのDateTime検証メソッドを書くと考えたことがありますか?そうすれば、過去または未来を調べるかどうかによって、DateTime.Now()という項目だけを見ることができます。

これは良いアイデアかどうかという疑問は、まあ、ある意味では、サーバー側の入力を確認することが良いと思います。しかし、私は、ユーザビリティの観点からは、クライアント側の検証をしないことをお勧めします。ユーザーが将来日付を選択しないようにするには、今後日付を選択する能力が制限されていることが良いと思います。

関連する問題