WebAPI OData fehlgeschlagen Validierung Das ModelState-Objekt wurde nicht zurückgegeben

8

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.

    
DanAbdn 03.05.2014, 11:45
quelle

1 Antwort

0

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.

    
Tomas Petovsky 09.11.2016 11:55
quelle