Poste AJAX de JavaScript Chaîne Tableau à JsonResult sous forme de liste renvoie toujours Null?

J’essaie de construire un tableau de chaînes en JavaScript et d’obtenir les résultats dans une liste de chaînes dans la méthode action. Voici à quoi ressemble mon JavaScript. J’utilise jQuery 1.4.2. Le problème est que ma liste dans la méthode d’action montre toujours NULL. Un tableau de chaînes JavaScript ne correspond-il pas correctement à une liste de chaînes en C #?

var test = ['test1', 'test2']; var parms = { var1: 'some ssortingng', var2: test }; $.ajax({ type: "POST", url: "/Test/JSONTestAction", async: false, data: parms, dataType: "json", success: function(data) { // success } }); 

Ensuite, mon JsonResult ressemble à ceci:

  public JsonResult JSONTestAction(ssortingng var1, List var2) { // var2 is always NULL -- not good return Json(new { test = "test" }); } 

J’ai rencontré le même problème après la mise à jour vers jQuery 1.4.2. Vous pouvez trouver la solution ici (dans la section Ajax).

L’ajout de traditional: true dans les options ajax devrait fonctionner.

 $.ajax({ type: "POST", traditional: true, url: "/Test/JSONTestAction", async: false, data: parms, dataType: "json", success: function(data) { // success } }); 

Cette modification visait à améliorer le comportement natif des utilisateurs de PHP / Rails, vous pouvez en savoir plus sur les modifications apscopes aux parameters ici .

Vous pouvez l’activer à la demande comme ceci:

 $.ajax({ //Stuff... traditional:true }); 

Ou globalement comme ça (seulement besoin de courir une fois avant de lancer une requête):

 jQuery.ajaxSettings.traditional = true;