仅当提供值时进行Fluent验证

本文关键字:Fluent 验证 | 更新日期: 2023-09-27 18:26:54

我有一个Post方法,基于Posted的数据,我将返回一个结果。我只想在提供了字段的情况下执行验证。如果没有发布任何值,我不想执行验证。这就是我目前拥有的。显然,如果值为null,它将在期望值时崩溃,我该如何解决这个问题?

public bool IsValidAvailability(int AvailabiltyValue)
{
    if (AvailabiltyValue > AvailabilityMax || AvailabiltyValue < AvailabilityMin)
        return false;
    return true;
}

这是我的验证规则。只有在提供了值的情况下,我才能添加任何内容来进行下面的验证吗?

RuleFor(x => (int)x.Availability).Must(validatorServices.IsValidAvailability).WithMessage("Availability must be between " + validatorServices.AvailabilityMin + " and " + validatorServices.AvailabilityMax);

仅当提供值时进行Fluent验证

您可以通过使用WhenUnless方法来实现这一点。

WhenUnless方法可用于指定控制何时执行规则的条件。例如,仅当IsPreferredCustomertrue:时,才会执行CustomerDiscount属性上的此规则

RuleFor(customer => customer.CustomerDiscount)
   .GreaterThan(0)
   .When(customer => customer.IsPreferredCustomer);

您可以在此处查看文档。