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