请在原问题中更新您的问题,包括
MinLengthClientValidator.cs
和
Event.cs
的源代码,问题可能出在那里 - 我会根据那些进行最终答案的编辑。请参考下面的实现,它可以很好地处理您的输入。
using FluentValidation;
using FluentValidation.Results;
using Shouldly;
namespace StackOverflowQandA
{
public class FluentValidationTests
{
private readonly EventDateValidator validator = new EventDateValidator();
[Fact]
public void ToGreaterThanFrom()
{
ValidationResult result = validator.Validate(new Event
{
FromDate = new DateTime(2023, 1, 1),
ToDate = new DateTime(2023, 1, 15)
});
result.IsValid.ShouldBeTrue();
}
[Fact]
public void ToLessThanFrom()
{
ValidationResult result = validator.Validate(new Event
{
FromDate = new DateTime(2023, 1, 25),
ToDate = new DateTime(2023, 1, 15)
});
result.IsValid.ShouldBeFalse();
}
[Fact]
public void FromToSame()
{
ValidationResult result = validator.Validate(new Event
{
FromDate = new DateTime(2023, 1, 15),
ToDate = new DateTime(2023, 1, 15)
});
result.IsValid.ShouldBeTrue();
}
[Fact]
public void ToIsNull()
{
ValidationResult result = validator.Validate(new Event
{
FromDate = new DateTime(2023, 1, 15),
ToDate = null
});
result.IsValid.ShouldBeFalse();
}
[Fact]
public void FromIsNull()
{
ValidationResult result = validator.Validate(new Event
{
FromDate = null,
ToDate = new DateTime(2023, 1, 15)
});
result.IsValid.ShouldBeFalse();
}
}
public class Event
{
public DateTime? FromDate { get; set; }
public DateTime? ToDate { get; set; }
}
public class EventDateValidator : AbstractValidator<Event>
{
public EventDateValidator()
{
RuleFor(evd => evd.FromDate)
.NotEmpty().WithMessage("*Required");
RuleFor(evd => evd.ToDate)
.NotEmpty().WithMessage("*Required")
.GreaterThanOrEqualTo(r => r.FromDate).WithMessage("Date To must be after Date From");
}
}
}
.GreaterThanOrEqualTo(r => r.FromDate ?? DateTime.MinValue)
,但仍然没有成功。 - undefinedEvent
还是EventDate
? - undefined