繁体   English   中英

FluentValidation:如何使用“ false”作为有效输入来使布尔值成为必填字段?

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

public bool IsDefault { get; set; }

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

我有一条规则,即IsDefault布尔属性不应为null。 问题是,当客户端点击api时,客户端未传递该字段时, IsDefault将默认布尔值属性设置为false,并且不给出诸如“此字段为必填字段”之类的错误。

如何使用“ true”或“ false”作为其唯一有效输入来使此字段符合要求?

我尝试过的一种解决方案是:

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

问题在于,当IsDefault为“ false”(这不是预期的用例)时,它将给出验证错误。

你可以用bool? Nullable<bool> )类型,可以为null ,默认值为null

您可以使用此:

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

从c#角度看,这是没有意义的,因为bool值始终为true或false,但是如果数据来自api,则值可以为''或null之类的其他值,而不必更改模型。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM