Heim > Artikel > Web-Frontend > Wie übergebe ich JSON-POST-Daten als Objekt in ASP.NET MVC an eine Web-API-Methode?
Übergabe von JSON-POST-Daten an die Web-API-Methode als Objekt
In ASP.NET MVC wird ein Kundenobjekt im JSON-Format über a übergeben Eine POST-Anfrage kann zu Nullwerten im Kundenparameter der POST-Methode führen. Dieses Problem tritt aufgrund des von Browsern verwendeten Standardinhaltstyps auf, der „application/x-www-form-urlencoded“ ist.
Lösung
Um das zu beheben Problem, der Content-Type-Header muss in der POST-Anfrage auf „application/json“ gesetzt werden. Dies kann durch die Verwendung von Content-Type: „application/json“ im Header der Anfrage erreicht werden, wie unten gezeigt:
$(function () { var customer = {contact_name :"Scott",company_name:"HP"}; $.ajax({ type: "POST", data :JSON.stringify(customer), url: "api/Customer", contentType: "application/json" }); });
Durch Angabe des Content-Type als „application/json“ das Modell Binder erkennt die JSON-Daten und bindet sie genau an das entsprechende Klassenobjekt.
Komplex übergeben Objekte
Wenn der Web-API-Methodenparameter ein komplexes Objekt ist, wie zum Beispiel:
public class CustomerViewModel { public int Id {get; set;} public string Name {get; set;} public List<TagViewModel> Tags {get; set;} }
Um dieses Objekt von der Clientseite zu senden, kann der folgende Code verwendet werden:
//Build an object which matches the structure of our view model class var model = { Name: "Shyju", Id: 123, Tags: [{ Id: 12, Code: "C" }, { Id: 33, Code: "Swift" }] }; $.ajax({ type: "POST", data: JSON.stringify(model), url: "../product/save", contentType: "application/json" }).done(function(res) { console.log('res', res); // Do something with the result :) });
Stellen Sie sicher, dass das [FromBody]-Attribut vorhanden ist
Der Web-API-Methodenparameter muss sein Mit dem Attribut [FromBody] versehen, um die Modellbindung aus dem Anforderungstext zu ermöglichen. Wenn dieses Attribut weggelassen wird, werden flache Eigenschaften korrekt gebunden, komplexe Eigenschaften bleiben jedoch leer.
[HttpPost] public CustomerViewModel Save([FromBody] CustomerViewModel m) { return m; }
Das obige ist der detaillierte Inhalt vonWie übergebe ich JSON-POST-Daten als Objekt in ASP.NET MVC an eine Web-API-Methode?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!