Tableau jQuery Ajax POSTing vers ASP.NET MVC Controller

Il me manque quelque chose ici. J’ai ce jQuery JavaScript:

$.ajax({ type: "POST", url: "/update-note-order", dataType: "json", data: { orderedIds: orderedIds, unixTimeMs: new Date().getTime() } }); 

orderedIds est un tableau de nombres JavaScript (par exemple, var orderedIds = [1, 2] ).

La méthode de manipulation du Controller est la suivante:

 [HttpPost] public void UpdateNoteOrder(long[] orderedIds, long unixTimeMs) { ... } 

Lorsque je mets un Debugger.Break() dans UpdateNoteOrder() , orderedIds est null dans la fenêtre de surveillance. ( unixTimeMs , cependant, a une valeur numérique.)

Comment puis-je passer le tableau de numéros via $.ajax() telle sorte que les orderedIds soient long[] dans mon contrôleur?

Il suffit de définir le paramètre traditional sur true :

 $.ajax({ type: "POST", url: "/update-note-order", dataType: "json", traditional: true, data: { orderedIds: orderedIds, unixTimeMs: new Date().getTime() } }); 

Depuis jquery 1.4, ce paramètre existe car le mécanisme de sérialisation des objects en parameters de requête a changé.

vous aurez besoin de transformer le paramètre commandeId en un tableau param, ou le contrôleur ne le verra pas

 $.param({ orderedIds: orderedIds }); 

dans votre code:

 $.ajax({ type: "POST", url: "/update-note-order", dataType: "json", data: { orderedIds: $.param({ orderedIds: orderedIds }), unixTimeMs: new Date().getTime() } });