2016-05-02 4 views
0

私は、ユーザーがインタビューをスケジュールすることができなければならない「インタビュー」モデルを持っていますが、インタビューは時間ごとに行う必要があります。したがって、ユーザーは時間を選択できるだけで、分/秒はデフォルトでゼロにする必要があります。 DataAnnotationsを使用してこれをどのように達成できますか?ここに私のインタビューモデルのコードがあります:DataAnnotationsを使用してDateTimeの分または秒を選択することをユーザーに制限しますか?

[Display(Name = "Interview Time")] 
    [DataType(DataType.Time)] 
    [DisplayFormat(DataFormatString = "{0:hh:mm}", ApplyFormatInEditMode = true)] // Something here? 
    public DateTime InterviewTime { get; set; }  
+0

分/秒はどこ、 '0'でないこと入力された場合は、検証エラーを表示するには、 'ReqularExpressionAttribute'を使用することができますが、より良いUIは私が2つのプロパティ'のDateTime Date'としてビューモデルを使用するかもしれません'TimeSpan Time'を使用し、datepickerを使用して日付とドロップダウンリストを選択して、利用可能な時間を表示し(9.00,10.000などのオプションを表示する)、値をデータモデルの' DateTime'プロパティに結合します –

答えて

4

を、それがこれを行うにDataAnnotationsを使用することが可能であるない終わる場合は、バッキングフィールドを使用し、セッターに検証することができます。

private DateTime _interviewTime; 

[Display(Name = "Interview Time")] 
[DataType(DataType.Time)] 
[DisplayFormat(DataFormatString = "{0:hh:mm}", ApplyFormatInEditMode = true)] // Something here? 
public DateTime InterviewTime { 
    get { 
     return _interviewTime; 
    } 
    set { 
     if (value.Minute != 0 || value.Second != 0 || value.Millisecond != 0) { 
      //either strip minutes/seconds/milliseconds or throw exception 
     } 
     _interviewTime = value; 
    } 
} 
関連する問題