public bool IsDefault { get; set; }
RuleFor(stockImage => stockImage.IsDefault).NotNull();
我有这个规则IsDefault
布尔属性不应该为空。问题是当客户端在访问api时没有传递此字段时,IsDefault
将默认布尔属性设置为false,并且不会给出任何错误,例如"此字段是必需的"。
如何根据需要使用" true"或"假"作为唯一有效的投入?
我试过的一个解决方案是:
RuleFor(stockImage => stockImage.IsDefault).NotEmpty();
这个问题是,当IsDefault
为" false"时,它会给出验证错误。这不是预期的用例。
答案 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类型。