Heim > Web-Frontend > js-Tutorial > Wie übergebe ich JSON-POST-Daten als Objekt in ASP.NET MVC an eine Web-API-Methode?

Wie übergebe ich JSON-POST-Daten als Objekt in ASP.NET MVC an eine Web-API-Methode?

Barbara Streisand
Freigeben: 2024-11-08 05:37:02
Original
615 Leute haben es durchsucht

How to Pass JSON POST Data to a Web API Method as an Object in ASP.NET MVC?

Ü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"
    });
});
Nach dem Login kopieren

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;}
}
Nach dem Login kopieren

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 :)
});
Nach dem Login kopieren

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;
}
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage