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

时间:2016-08-03 06:47:34

标签: c# fluentvalidation

public bool IsDefault { get; set; }

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

我有这个规则IsDefault布尔属性不应该为空。问题是当客户端在访问api时没有传递此字段时,IsDefault将默认布尔属性设置为false,并且不会给出任何错误,例如"此字段是必需的"。

如何根据需要使用" true"或"假"作为唯一有效的投入?

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

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

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

3 个答案:

答案 0 :(得分:7)

您可以使用bool?Nullable<bool>)类型,该类型可以是null,默认值为null

答案 1 :(得分:3)

你可以用这个:

RuleFor(stockImage => stockImage.IsDefault).Must(x => x == false || x == true)
从c#的角度来看,

没有意义,因为bool值总是为真或假,但如果数据来自api,则值可以是任何不同的值,例如&#39;&#39;或者无效,您不必更改模型。

答案 2 :(得分:-3)

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

使用新类型而不是最初设置为null的c#bool类型。