Ich reproduzierte das Problem, das ich in einem brandneuen MVC Web API-Projekt habe.ModelState.IsValid ist falsch, wenn ich einen nullbaren Parameter habe
Dies ist der Standardcode mit einer leichten Änderung.
public string Get(int? id, int? something = null)
{
var isValid = ModelState.IsValid;
return "value";
}
Wenn Sie http://localhost/api/values/5?something=123
gehen dann funktioniert dies gut, und isValid ist true
. Wenn Sie zu http://localhost/api/values/5?something=
gehen, dann ist isValid false
.
Das Problem, das ich habe ist, dass, wenn Sie einen Null oder weggelassen Wert für ein Element bereitzustellen, die NULL-Werte zulässt, die ModelState.IsValid Fahnen ein Fehler Validierung "A value is required but was not present in the request."
Das Model Wörterbuch sieht auch so sagen:
mit zwei Einträgen für something
, ein NULL-Werte zulässt, die ich nicht sicher bin, ob es wichtig ist oder nicht.
Eine Idee, wie ich das beheben kann, so dass das Modell gültig ist, wenn NULL-Parameter weggelassen oder als Null bereitgestellt werden? Ich verwende Modellvalidierung innerhalb meiner Web-API und es bricht es, wenn jede Methode mit einem Nullable-Parameter Modellfehler erzeugt.
Potenziell nützliche Informationen hier: http://stackoverflow.com/a/11922978/3130094 - vermutlich werden Sie diese Situation zu sehen, weil eher Als ich den 'something'-Parameter ganz weglasse, addierst du ihn und gibst nichts zu. –
Ich habe versucht, über den JSON-Serialisierer in meinem ursprünglichen Projekt nachzudenken, ich bin mir nicht sicher, wie ich ihn in diesem Projekt ignorieren soll, da ich JSON nicht mache Anfragen aber mit dem Browser (w hich glaube ich ist anders aber könnte falsch liegen?) – NibblyPig
asp.net 4.5.2 wenn das hilft. Ich fügte 'config.Formatters.JsonFormatter.SerializerSettings = new JsonSerializerSettings {NullValueHandling = NullValueHandling.Ignore};' hinzu, um die Serialisierung und Deserialisierung von Nullwerten zu ignorieren, aber dies hat nicht funktioniert. Ich weiß nicht, ob 'something =' als 'null' oder '' '(leere Zeichenfolge) behandelt wird, oder ob dieser Serializer sogar für meine Testoperationen verwendet wird. – NibblyPig