Gre*_*inn 11 datetime fluentvalidation
我有一个bool以及一个可以为null的DateTime属性.仅当bool设置为true时才需要DateTime ...如果bool为true,我想验证日期.
到目前为止我有这个表达...
When(p => p.HasVisa == true, () => RuleFor(p => p.VisaExpiryDate).NotNull());
现在我尝试使用.Must扩展名和我的自定义BeAValidDate方法验证该表达式中的日期...
When(p => p.HasVisa == true, () => RuleFor(p => p.VisaExpiryDate).NotNull().Must(BeAValidDate));
private bool BeAValidDate(DateTime date)
{
  if (date == default(DateTime))
    return false;
  return true;
}
但是.Must扩展名不允许我对可以为空的DateTime进行操作.如何在可以为空的日期进行此类验证?
谢谢
小智 20
只需添加'When'来检查对象是否为null:
RuleFor(x => x.AlternateNumber)
    .Must(IsAllDigits)
    .When(x => !string.IsNullOrEmpty(x.AlternateNumber))
    .WithMessage("AlternateNumber should contain only digits");
正如 Joachim 提到的,我需要对 BeAValidDate 进行重载,以接受空日期和非空日期。
private bool BeAValidDate(DateTime date)
{
  if (date == default(DateTime))
    return false;
  return true;
}
private bool BeAValidDate(DateTime? date)
{
  if (date == default(DateTime))
    return false;
  return true;
}
| 归档时间: | 
 | 
| 查看次数: | 6841 次 | 
| 最近记录: |