Les données de publication AJAX jQuery sont nulles dans le contrôleur api web c

J’envoie des données à un c# web api controller en utilisant l’appel suivant.

 $.ajax({ type: "POST", url: "menuApi/menu/Cost", data: JSON.ssortingngify(order), contentType: "application/json", success: function (data) { window.alert('done')}, dataType: 'json' }); 

Le c# controller côté serveur est comme ceci:

 public ssortingng Cost([FromBody] ssortingng order) { var sOrder = Newtonsoft.Json.JsonConvert.DeserializeObject(order); return ""; } 

L’object order en Javascript est un object complexe avec des tableaux et propriétés nesteds. Je reçois des données comme nulles. Je ne suis pas sûr de savoir comment puis-je obtenir la commande envoyée via l’appel ajax.

Edit: Ceci est mon object de commande

 var order = { name:"", id:"", cost:"", details: { sItem:[{name:"",cost:""}], dItem:[{name:"",cost:"", components:[{name:"",quantity:""}]}] } } 

Compris, vous devez poster la demande ajax en tant que données de formulaire avec un nom de paramètre / champ vide comme celui-ci:

  var order = { name: "", id: "", cost: "", details: { sItem: [{ name: "", cost: "" }], dItem: [{ name: "", cost: "", components: [{ name: "", quantity: "" }] }] } }; $.ajax({ type: "POST", url: "api/Values", data: {'': JSON.ssortingngify(order)} , success: function (data) { window.alert('done') }, }); 

Le classeur de modèles l’a déjà fait pour vous, pas besoin de désérialiser. Il vous suffit de changer le type de paramètre en object ou dynamic . Il ne rest plus qu’à envisager de supprimer ce traitement redondant:

  public ssortingng Cost([FromBody] object order) { var sOrder = Newtonsoft.Json.JsonConvert.DeserializeObject(order.ToSsortingng()); return ""; }