Ich erstelle ein AngularJS-Webformular, um einen POST (Einfügen) in eine Tabelle mithilfe von WebAPI-Setup als OData durchzuführen. Ich versuche, ein fehlgeschlagenes ModelState-Objekt zurück zu bekommen (im JSON-Format), um die entsprechenden Felder in einem Formular zu validieren.
Alles, was ich zurückbekomme, ist eine einzelne Zeichenfolge mit allen Details als String (nicht in einem JSON-Parsable-Format)
%Vor%Meine Post-Methode sieht so aus:
%Vor%Ich habe sogar versucht, dies zu einem ActionFilterAttribute zu abstrahieren, aber immer noch das gleiche Ergebnis
%Vor%Meine WebApi-Startmethode hat die folgende Konfiguration:
%Vor%Dies ist, was ich erreichen möchte (nicht mit meinem Beispiel oben abgestimmt):
%Vor%Ich brauche den ModelState zurück, damit ich das Validierungsfeedback auf die entsprechenden Felder ausrichten kann.
Irgendwelche Ideen, was ich überprüfen / ändern kann, um es wie gewünscht zum Laufen zu bringen?
Danke.
Update 1 - Referenz auf asp.net gefunden
OData-Fehlerantwort enthält keine Modellstatusfehler
Beim Erstellen einer Fehlerantwort mit den Erweiterungsmethoden CreateErrorResponse oder HttpErrors wird der Fehler direkt einer OData-Fehlerantwort zugeordnet. Alle Modellstatusfehler in der Fehlerantwort werden nicht an die OData-Fehlerantwort weitergegeben. Um die Modellstatusfehler in der OData-Fehlerantwort zu erhalten, verwenden Sie direkt die CreateODataErrorResponse-Erweiterungsmethode oder ODataError und fügen Sie der OData-Fehlernachricht Beschreibungen der Modellstatusfehler hinzu.
OData verwendet ODataError
als Fehlerantwort. Der Unterschied zwischen ODataError
und HttpEror
besteht darin, dass HttpError von Dictionary<string, object>
abgeleitet wird. Wenn es mit ModelStateDictionary
instatiert wird, werden alle Modellfehler auf ModelState
property gesetzt. Wenn Sie jedoch OData anfordern, wird HttpError
object auf ODataError
abgebildet und alle Validierungsfehler werden in InnterError
property verkettet.
Tags und Links asp.net-web-api angularjs c# json validation