Maison > interface Web > js tutoriel > Comment transmettre des données JSON POST à ​​une méthode API Web en tant qu'objet dans ASP.NET MVC ?

Comment transmettre des données JSON POST à ​​une méthode API Web en tant qu'objet dans ASP.NET MVC ?

Barbara Streisand
Libérer: 2024-11-08 05:37:02
original
627 Les gens l'ont consulté

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

Transmission des données JSON POST à ​​la méthode API Web en tant qu'objet

Dans ASP.NET MVC, transmission d'un objet client au format JSON via un La requête POST peut entraîner des valeurs nulles dans le paramètre client de la méthode POST. Ce problème est dû au type de contenu par défaut utilisé par les navigateurs, qui est "application/x-www-form-urlencoded".

Solution

Pour rectifier le problème, l'en-tête Content-Type doit être défini sur "application/json" dans la requête POST. Ceci peut être réalisé en utilisant Content-Type : "application/json" dans l'en-tête de la requête, comme démontré ci-dessous :

$(function () {
    var customer = {contact_name :"Scott",company_name:"HP"};
    $.ajax({
        type: "POST",
        data :JSON.stringify(customer),
        url: "api/Customer",
        contentType: "application/json"
    });
});
Copier après la connexion

En spécifiant le Content-Type comme "application/json", le modèle binder reconnaîtra et liera les données JSON à l'objet de classe correspondant avec précision.

Passing Complex Objets

Si le paramètre de méthode API web est un objet complexe, tel que :

public class CustomerViewModel {
    public int Id {get; set;}
    public string Name {get; set;}
    public List<TagViewModel> Tags {get; set;}
}
Copier après la connexion

Pour envoyer cet objet depuis le côté client, le code suivant peut être utilisé :

//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 :)
});
Copier après la connexion

Assurer l'attribut [FromBody]

Le paramètre de la méthode de l'API Web doit être décoré avec l'attribut [FromBody] pour activer la liaison de modèle à partir du corps de la requête. Si cet attribut est omis, les propriétés plates seront liées correctement, mais les propriétés complexes resteront vides.

[HttpPost]
public CustomerViewModel Save([FromBody] CustomerViewModel m)
{
    return m;
}
Copier après la connexion

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal