Heim  >  Artikel  >  Web-Frontend  >  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
Barbara StreisandOriginal
2024-11-08 05:37:02527Durchsuche

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"
    });
});

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!

Stellungnahme:
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