Envoyer un tableau au contrôleur MVC via JSON?

J’essaie et ai du mal à envoyer un tableau via JSON à une action de contrôleur MVC.

Voici ce que j’ai et ce que j’ai essayé …

//Get checked records var $checkedRecords = $(':checked'); //eg 3 rows selected = [input 4, input 5, input 6] //Have sortinged following: sendingVar: $checkedRecords.serializeArray(); // gives array of 0's sendingVar: JSON.ssortingngify($checkedRecords); // gives "{\"length\":1,\"prevObject\":{\"0\":{\"jQuery1313717591466\":1,\"jQuery1313717591653\":13},\"context\":{\"jQuery1313717591466\":1,\"jQuery1313717591653\":13},\"length\":1},\"context\":{\"jQuery1313717591466\":1,\"jQuery1313717591653\":13},\"selector\":\":checked\",\"0\":{}}"...wtf //Post $.post(url, { sendingVar: sendingVar }, function(data) {alert(data); }); 

Comment fait-on ça ?

edit: à ceux qui suggèrent d’envoyer $checkedRecords “tel $checkedRecords ” à partir de la ligne supérieure – cela ne fonctionne pas. Je reçois une étrange exception quelque part dans le cadre de jquery 🙁

 uncaught exception: [Exception... "Could not convert JavaScript argument" nsresult: "0x80570009 (NS_ERROR_XPC_BAD_CONVERT_JS)" location: "JS frame :: http://.../.../.../jquery-1.4.4.min.js ::  :: line 141" data: no] 

ce qui, je pense, signifie qu’il tente d’assigner la valeur null à quelque chose qu’il ne peut pas.

Edit: J’utilise MVC2 pas 3

Edit2: Après la réponse de @ Monday, le problème est dû à la façon dont j’ai construit le tableau, comme [input 4, input 5, input 6] et non à [4,5,6] . tableau à la place?

Edit3: Arrêtez de voter en double lorsque ce n’est pas le cas. Avez-vous réellement lu mon problème ou lu les problèmes liés? c’est un problème différent

@Daveo:

Je ne souhaite pas créer un atsortingbut personnalisé redondant uniquement pour envoyer un tableau à partir de JSON, ce qui est d’autant plus ridicule que nous en avons déjà parlé dans cette question. Ce n’est pas nécessaire.

MVC3 – non pertinent

Voici ma démo, utilisez mvc2, espérons que cela vous aidera ~

La clé du succès est traditionnelle

définir le paramètre traditional sur true

 $(function(){ var a = [1, 2]; $.ajax({ type: "POST", url: "<%= ResolveUrl("~/Home/PostArray/") %>", data: {orderedIds: a}, dataType: "json", traditional: true, success: function(msg){alert(msg)} }); }) 

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

et l’action est ~

 [HttpPost] public ActionResult PostArray(int[] orderedIds) { return Content(orderedIds.Length.ToSsortingng()); } 

vous pouvez également utiliser JSON.ssortingngyfy pour envoyer les données sous forme de chaîne, puis utiliser la JavaScriptSerializer class pour récupérer les données.

En code C #, pour obtenir les données, ressemblera à ceci:

 JavaScriptSerializer js = new JavaScriptSerializer(); js.Deserialize(ssortingng paramiter);