FluentValidation:如何将bool作为必填字段,将'false'作为有效输入?

Sah*_*rma 1 c# fluentvalidation

public bool IsDefault { get; set; }

RuleFor(stockImage => stockImage.IsDefault).NotNull();

我有这个规则,IsDefaultboolean属性不应该为null.问题是当客户端在命中api时没有传递此字段,IsDefault将默认布尔属性设置为false并且不提供任何错误,例如"此字段是必需的".

如何根据需要将此字段设为"true"或"false"作为其唯一有效输入?

我试过的一个解决方案就是:

RuleFor(stockImage => stockImage.IsDefault).NotEmpty();

这个问题是它在IsDefault"假" 时给出验证错误,这不是预期的用例.

ger*_*npa 10

你可以用这个:

RuleFor(stockImage => stockImage.IsDefault).Must(x => x == false || x == true)
Run Code Online (Sandbox Code Playgroud)

从 C# 的角度来看没有意义,因为 bool 值始终为 true 或 false,但如果数据来自 api,则 value 可以是任何不同的东西,例如 '' 或 null,您不必更改模型。


Dar*_*dan 7

您可以使用bool?(Nullable<bool>)类型,它可以是null默认值null.