2016-08-03 15 views
0

öffentliche bool IsDefault {bekommen; einstellen; }FluentValidation: wie bool als Pflichtfeld mit 'false' als gültige Eingabe zu machen?

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

Ich habe diese Regel, dass "IsDefault" boolesche Eigenschaft nicht null sein sollte. Das Problem ist, wenn der Client dieses Feld beim Drücken der API nicht übergibt, "IsDefault" erhält die Standard-Boolesche Eigenschaft als false und gibt keinen Fehler wie "Dieses Feld ist erforderlich".

Wie kann ich dieses Feld wie erforderlich mit "True" oder "False" als einzige gültige Eingaben machen? i

Eine Lösung wurde versucht, macht es:

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

Das Problem dabei ist, dass es Validierungsfehler gibt, wenn "IsDefault" "falsch" ist, was nicht erwartet wird Anwendungsfall.

Antwort

4

könnten Sie verwenden bool? (Nullable<bool>) geben die in der Lage ist null und Wert null sein Verzug.

-1

erklären einfach eine Enum genannt booleanType mit den Feldern {false, true, null}

den neuen Typ Verwenden Sie anstelle von C# Bool Typ anfänglich null gesetzt.

+0

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

0

könnten Sie verwenden:

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

aus der C# Perspektive ist nicht sinnvoll, da der Boolesche Wert immer wahr oder falsch sein, aber wenn die Daten von einem api kommen, kann Wert etwas anders sein wie '' oder null und Sie müssen Ihr Modell nicht ändern.