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,而您不需要不必更改您的模型。
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,而您不需要不必更改您的模型。