[英]C# Custom Validation Attributes: Comparing two Dates in the same model
我創建了一個繼承表單 ValidationAttibute Class 的自定義驗證 class。 它確保無法選擇過去的日期。 現在我有第二次約會,需要在第一次約會后至少 3 天。 比較兩個日期並僅在第二個日期比第一個日期晚 3 天(終止日期和存檔日期)時繼續進行的最佳方法是什么
這是我第一次約會的代碼
public class CustomTerminationDate : ValidationAttribute
{
public override bool IsValid(object value)
{
DateTime dateTime = Convert.ToDateTime(value);
return dateTime >= DateTime.Now.Date;
}
}
它的實現如下:
[Required, Display(Name = "Termination Date")]
[DataType(DataType.Date)]
[CustomTerminationDate(ErrorMessage = "Termination Date can not be in the past")]
public DateTime TerminationDate { get; set; }
驗證屬性非常適合驗證單個屬性。 我不會嘗試使用屬性驗證多個屬性,因為您無法確定字段將按什么順序分配以及何時進行驗證。
相反,我會實現IValidatableObject
;
public class YourClass: IValidatableObject
{
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (TerminationDate < OtherDate + TimeSpan.FromDays(3))
yield return new ValidationResult("... error message here ...");
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.