$ Je suis en train de passer un tableau imbriqué à un contrôleur mvc asp.net comme ceci:passant tableaux imbriqués à l'aide asp.net mvc jQuery de .ajax
var subgroups = [];
subgroups [0] = [["A", "Y"],
["B", "Y"],
["C", "Y"]];
subgroups [1] = [["D", "Z"],
["E", "Z"],
["F", "Z"]];
$.ajax({ url: "<%= Url.Content("~/Controller/Action") %>", data: { subgroups: subgroups },
dataType: "json", context: document.body, success: function(data) { ... });
Le contrôleur résultant:
public ContentResult Action(List<string[][]> subgroups) {
...
}
le problème est la variable sous-groupes résultant du contrôleur ressemble à ceci:
subgroups[0][0] == null;
subgroups[0][1] == null;
subgroups[0][2] == null;
subgroups[1][0] == null;
subgroups[1][1] == null;
subgroups[1][2] == null;
les valeurs de la profondeur Les tableaux imbriqués ne sont pas passés. Firebug rapporte les paramètres de ma demande ajax sont:
subgroups[0][0][] A
subgroups[0][0][] Y
subgroups[0][1][] B
subgroups[0][1][] Y
subgroups[0][2][] C
subgroups[0][2][] Y
subgroups[1][0][] D
subgroups[1][0][] Z
subgroups[1][1][] E
subgroups[1][1][] Z
subgroups[1][2][] F
subgroups[1][2][] Z
On dirait que la cause est que jQuery ne remplit pas dans ces indices de tableau parce que je peux résoudre le problème est que je formater les données:
subgroups [0] = [{ 0: "A", 1: "Y"}, ...];
Pourquoi jQuery place-t-il les index pour le tableau externe, mais pas pour le tableau interne? S'il vous plaît dites-moi qu'il existe une meilleure solution pour cela que de spécifier manuellement les touches numériques?
+1 Pour être l'un des plus braves hommes jquery je suis venu à travers :) – Jimbo
Votre solution n'a pas tout le travail pour moi, mais il m'a aidé à trouver une solution en changeant la ligne 5419 à: 'buildParams (préfixe + "[" + i + "]", v); ' Merci d'avoir ouvert un rapport de bug et d'avoir trouvé une solution. Je ne suis pas sûr s'il s'agit d'un bug ou d'un comportement jQuery prévu, mais pour les personnes qui exécutent ASP.net MVC ce comportement semble plus utile. –
oui, j'ai copié le mauvais numéro de ligne, le droit est 5419. Merci –