我想寫一個DateTime的自定義ValidationAttribute?MVC3 ValidationAttribute for DateTime?返回DateTime.Max在IsValid(...)
然而,當它擊中IsValid(object value)
值已經DateTime.Max
什麼我可以在我的代碼中看到已將此值設置,但它意味着我在努力對其進行驗證。
我想要的規則是「空或今日之後」 - 這意味着如果有一個空值,那麼它很好,但如果有一個值,那麼我想驗證。
public class AfterTodayAttribute : ValidationAttribute, IClientValidatable
{
public AfterTodayAttribute()
{
}
//Tried this as well...same result
//protected override ValidationResult IsValid(object value, ValidationContext validationContext)
//{
// return base.IsValid(value, validationContext);
//}
public override bool IsValid(object value)
{
//value is already a DateTime and set to DateTime.Max
var valid = false; // for testing only
return valid;
}
}
...
[Display(Description = "Expiry Date")]
[DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
[DataType(DataType.Date)]
[AfterToday(false, ErrorMessage = "The Limit Expiry Date must be later than Today")]
public DateTime? NewExpiryDate { get; set; }
...
爲什麼加-1秒? – AgentFire
這將確保dt在今天之後而不是明天00:00。如果你沒有減少日期,那麼你應該使用這個(大於或等於):dt.Value> = DateTime.Today.AddDays(1) –
@PeterKiss但如果偶數dt2比dt1晚一秒,則運算符將返回true。 –