C#自定义验证属性:比较同一模型中的两个日期



我创建了一个自定义验证类,该类继承了ValidationAttibute 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 ...");
}
}

最新更新