仅在提供值时进行流利验证
Fluent Validation only if value is supplied
我有一个 Post 方法,根据 Post 编辑的数据,我会 return 一个结果。我只想在提供字段时执行验证。如果没有发布任何值,我不想执行验证。这就是我目前所拥有的。显然,如果该值为空,它会因为它期望一个值而崩溃,我该如何解决这个问题?
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);
您可以通过使用 When
和 Unless
方法来做到这一点。
When
和 Unless
方法可用于指定控制规则执行时间的条件。例如,CustomerDiscount
属性 上的这条规则只会在 IsPreferredCustomer
为 true
时执行:
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.When(customer => customer.IsPreferredCustomer);
您可以查看文档here。
我有一个 Post 方法,根据 Post 编辑的数据,我会 return 一个结果。我只想在提供字段时执行验证。如果没有发布任何值,我不想执行验证。这就是我目前所拥有的。显然,如果该值为空,它会因为它期望一个值而崩溃,我该如何解决这个问题?
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);
您可以通过使用 When
和 Unless
方法来做到这一点。
When
和 Unless
方法可用于指定控制规则执行时间的条件。例如,CustomerDiscount
属性 上的这条规则只会在 IsPreferredCustomer
为 true
时执行:
RuleFor(customer => customer.CustomerDiscount)
.GreaterThan(0)
.When(customer => customer.IsPreferredCustomer);
您可以查看文档here。