簡體   English   中英

C# 自定義驗證屬性:比較同一 model 中的兩個日期

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM