8
votes

Envoyer une matrice au contrôleur MVC via JSON?

J'essaie et je me lance, d'envoyer un tableau via Json à une action du contrôleur MVC.

Voici ce que j'ai et ce que j'ai essayé ... p>

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 :: <TOP_LEVEL> :: line 141" data: no]


3 commentaires

Dupliquer possible de: Stackoverflow.com/Questtions/320291/... et Stackoverflow.com/questions/4789481 / ...


Quel est votre résultat souhaité? Votre tableau est d'objets JQuery, la version stringify me semble juste. Qu'attendez-vous que cela ressemble?


C'est juste un tableau contenant des identifiants de chaîne des éléments vérifiés. Je veux que l'enregistrementRecords contienne une matrice de tous les identifiants d'éléments sélectionnés. La valeur de l'entrée sélectionnée contient la valeur d'identification dont j'ai besoin.


3 Réponses :


24
votes

Voici ma démo, utilisez MVC2, j'espère que certains aides ~

la clé du succès est traditionnel

Définissez le paramètre traditionnel xxx

puisque JQuery 1.4 Ce paramètre existe parce que le mécanisme de sérialiser Les objets dans les paramètres de requête ont changé.

et action est ~ xxx


4 commentaires

Malheureusement, cela ne fonctionne pas. CommandesDids est NULL dans la méthode du contrôleur. Je soupçonne parce que Ajax fait réellement un obtenez ?


@baron - À mon emplacement, ça marche bien. CommandesDids est un nom de paramètre


Hmmm excuses, vous êtes correct, ce code fonctionne. Donc, le problème réside dans la façon dont je reçois la gamme d'identifiants vérifiés avec var $ cochreducords = $ (': coché'); qui me donne [entrée 3, entrée 4, entrée 5] où j'ai réellement besoin: [1, 2] . Merci


merci, je l'ai eu avec var items = []; $ ("entrée: cochée"). chacun (fonction () {items.push ($ (ceci) .val ());});



0
votes

Vous pouvez également utiliser json.stringyfy pour envoyer les données sous forme de chaîne, puis utilisez la classe JavasCrriptserializer pour revenir les données.

dans le code C #, pour obtenir le Les données vont ressembler à ceci: xxx


0 commentaires

0
votes

Utilisez ce code simple

var url = '/sampleController/sampleAction'
var params = {sendingVar: [1,2]}
$.post(url, params , function (data) {
   $("#lblResult").html(' : ' + data);
}).fail(function (e) {
   alert(e);
});


0 commentaires