C# 自定义验证属性:比较同一模型中的两个日期
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 ...");
}
}
我创建了一个继承表单 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 ...");
}
}