【发布时间】:2021-10-07 09:19:50
【问题描述】:
我在一个类中有两个相互依赖的属性:
public class SomeClass
{
public DateTime EarliestDeliveryDate { get; set; }
public DateTime LatestDeliveryDate { get; set; }
...
}
我将 FluentValidation 配置如下:
using FluentValidation;
...
public class SomeValidator : AbstractValidator<SomeClass>
{
public SomeValidator ()
{
RuleFor(x => x.EarliestDeliveryDate).Must((order, earliestDeliveryDate) => earliestDeliveryDate < order.LatestDeliveryDate)
.WithMessage("Earliest delivery date has to be before the latest delivery date.");
RuleFor(x => x.LatestDeliveryDate)
.Must((order, latestDeliveryDate) => latestDeliveryDate > order.EarliestDeliveryDate)
.WithMessage("Latest delivery date has to be after the earliest delivery date.");
...
}
}
每个属性的验证都按预期进行。但是,如果用户为这两个属性输入了无效日期,然后更正了其中一个输入字段(例如 EarliestDeliveryDate),则另一个属性(例如 LatestDeliveryDate)的错误消息仍然存在。
如果一个属性的值发生变化,如何触发所有依赖属性的验证?
【问题讨论】:
-
那么,
LatestDeliveryDate在这种情况下的日期无效? -
@GregBurghardt 问题是,一旦用户更正了其中一个属性,这将使这两个属性都有效。但验证规则将仅针对修改后的属性进行评估,而为其他属性留下错误消息。如果其中一个发生更改,我想对这两个属性强制执行验证。
标签: c# fluentvalidation