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

FluentValidation: how to make bool as required field with 'false' as valid input?

public bool IsDefault { get; set; }

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

我的规则是 IsDefault 布尔值 属性 不应该为空。问题是当客户端在点击 api 时不传递此字段时,IsDefault 将默认布尔值 属性 获取为 false,并且不会给出任何错误,如 "This field is required".

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

我尝试的一个解决方案是:

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

这个问题是当 IsDefault 是 "false" 时它会给出验证错误,这不是预期的用例。

只需使用字段 {false,true,null} 声明一个名为 booleanType 的枚举

使用新类型代替最初设置为 null 的 c# bool 类型。

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

你可以使用这个:

RuleFor(stockImage => stockImage.IsDefault).Must(x => x == false || x == true)

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