仅当提供值时才进行流利验证

1 c# asp.net validation fluentvalidation asp.net-web-api

我有一个 Post 方法,根据发布的数据我将返回一个结果。我只想在提供字段时才执行验证。如果没有发布任何值,我不想执行验证。这就是我目前所拥有的。显然,如果该值为空,它将崩溃,因为它需要一个值,我该如何解决这个问题?

public bool IsValidAvailability(int AvailabiltyValue)
{
    if (AvailabiltyValue > AvailabilityMax || AvailabiltyValue < AvailabilityMin)
        return false;
    return true;
}
Run Code Online (Sandbox Code Playgroud)

这是我的验证规则。我可以添加任何内容以使下面的验证仅在提供值时才发生吗?

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

Oma*_*ani 5

您可以通过使用WhenUnless方法来做到这一点。

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

RuleFor(customer => customer.CustomerDiscount)
   .GreaterThan(0)
   .When(customer => customer.IsPreferredCustomer);
Run Code Online (Sandbox Code Playgroud)

您可以在此处查看文档。