2016-08-03 1 views
0

public bool IsDefault {get; ensemble; }FluentValidation: comment faire bool en champ obligatoire avec 'false' comme entrée valide?

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

J'ai cette règle que la propriété booléenne "IsDefault" ne doit pas être nulle. Le problème est lorsque le client ne passe pas ce champ en tapant l'API, "IsDefault" obtient la propriété booléenne par défaut comme false et ne donne pas d'erreur comme "Ce champ est requis".

Comment est-ce que je peux faire ce champ comme requis avec "vrai" ou "faux" comme ses seules entrées valides?

Une solution j'ai essayé la faisait:

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

Le problème avec ceci est qu'il donne une erreur de validation quand "IsDefault" est "faux" ce qui n'est pas attendu cas d'utilisation.

Répondre

4

Vous pouvez utiliser bool? (Nullable<bool>) type qui est capable d'être null, et la valeur par défaut est null.

-1

simplement déclarer un enum appelé BooleanType avec les champs {false, true, null}

Utilisez le nouveau type au lieu de C# type bool initialement à null.

+0

https://thedailywtf.com/articles/What_Is_Truth_0x3f_ – OffHeGoes

0

Vous pouvez utiliser ceci:

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

du C# perspective n'a pas de sens, parce que la valeur bool toujours vrai ou faux, mais si les données proviennent d'une api, la valeur peut être quelque chose de différent comme '' ou null et vous ne devez pas changer votre modèle.