仅在提供值时才进行流畅验证

时间:2015-12-15 11:58:23

标签: c# asp.net validation asp.net-web-api fluentvalidation

我有一个Post方法并根据数据发布我会返回一个结果。我想只在提供字段时才执行验证。如果没有发布值,我不想执行验证。这就是我目前所拥有的。显然,如果值为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);

1 个答案:

答案 0 :(得分:2)

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

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

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

您可以查看文档here