2016-11-11 2 views
1

私はSystem.Data.SqlTypes.SqlDateTime.MinValueSystem.Data.SqlTypes.SqlDateTime.MaxValueを使用して、次のコード行を使用して日時と日付フィールドの範囲を定義しています。MVCの日時と日付フィールドの範囲limt

[Range(typeof(DateTime), "1/1/1753 12:00:00 AM", "12/31/9999 11:59:59 PM", ErrorMessage="\'D2\' must be within 1/1/1753 12:00:00 AM and 12/31/9999 11:59:59 PM.")] 
public System.Nullable<System.DateTime> D2{get;set;}//; 

しかし、私はテキストボックスに日付11/08/2016 12:00 amに入ったときには、1753年1月1日午前12時00分と9999年12月31日11:59の範囲内でなければなりませんエラーメッセージ

「D2」をスローしますPM。

ですから、上記のコードで何が間違っているか教えてください。

+0

http://stackoverflow.com/questions/3025361/c-sharp-datetime-to-yyyymmddhhmmss-format以下のようにそこの日付の検証を確認することができます。 ISO-Format記法(YYYY-MM-DD HH:mm:SS)を使用しようとしましたか?表示値 – Kapein

+0

のように、datetime変数を別に設定する必要があります。あなたのフォーマットはロケールに依存し、したがって "面白い"振る舞いを作り出すかもしれません。 –

答えて

0

あなたのクラスのIValidatableObjectインターフェイスを使用して

public class Sample : IValidatableObject 
{ 
    public DateTime Date { set; get; } 
    public IEnumerable<ValidationResult> Validate(ValidationContext validationContext) 
    { 
     if (Date > new DateTime(2012, 12, 12)) 
     { 
      yield return new ValidationResult("you cant enter it"); 
     } 
    } 
}