En passant complexe chaîne JSON à 1 paramètre webmethod en c# - desearialize en objet (json.net)?
J'ai été heureux de la sérialisation avec des objets javascript en JSON à l'aide de
JSON.stringify
Et envoyer le long de ma "statique" webmethod en c#/asp.net et assez sûr il arrive .. j'ai besoin de le bon nombre de paramètres, donc si mon objet json a "startDate","date_fin","réserve", puis mon webmethod besoins de ces paramètres.
"Au fond de ma commande objet que j'ai, j'ai un certain nombre de paramètres sur cet objet donc j'aurais besoin d'utiliser le même numéro sur le webmethod - c'est un peu brouillon??" - Je vais vous expliquer
J'ai une assez complexe de "l'Ordre" de l'objet en javascript et souhaitez sérialiser l'aide de stringify et l'envoyer à mon webmethod mais je ne veux pas de spécifier tous les paramètres est-il un moyen de les contourner cela?
Je m'attendais à quelque chose de ce genre sur mon webmethod
public static bool MakeReservation(object order)
Ensuite dans mon webmethod j'ai seulement 1 paramètre, MAIS je peux ensuite desearilize à un vrai objet de c# à l'aide de JSON.NET. J'ai essayé comme ça envoi du json à travers mais parce qu'il ya SEULEMENT 1 paramètre sur mon webmethod sa faute.
Fondamentalement, ce que j'essaie de dire, si je que je veux continuer à utiliser mon webmethod mais je ne veux pas avoir à faire de spécifier 15 paramètres sur la webmethod
Je veux le JSON de la Chaîne d'arriver dans ma webmethod et puis je peux le décomposer sur le serveur.
Est-ce possible?
Ici est de savoir comment je suis actuellement à l'envoi de mon JSON pour le serveur (webmethod) à l'aide de jquery
var jsonData = JSONNew.stringify(orderObject);
$.ajax({
type: "POST",
url: "MyService.aspx/DoReservation",
data: jsonData,
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function(msg) {
success = true;
},
error: function(msg) {
success = false;
},
async: false
});
pourquoi changer le contentType? ce qui se passe quand vous prenez cette sortie
comme je sais que vous avez besoin dans.. le type de contenu?? C'est ce que la plupart des tutoriels dire... j'ai réussi à le faire ... mais je n'ai aucune idée si c'est une bonne pratique ou ?? fondamentalement, j'ai fait cette var jsonString = JSONNew.stringify(orderObject); var jsonObject = new Object(); jsonObject.jsonString = jsonString ; var jsonData = JSONNew.stringify(jsonObject); Maintenant, j'ai besoin seulement de 1 le paramètre sur la webmethod qui est une chaîne et de la chaîne json entre elle .. je n'ai aucune idée si ça fonctionne encore.. mais au moins je suis entrée dans la webmethod avec jsonstring
OriginalL'auteur mark smith | 2009-07-06
Vous devez vous connecter pour publier un commentaire.
Si vous essayez d'envoyer un objet qui ressemble à ceci:
il va essayer et la carte date de fin et la date de début de paramètres correspondants dans votre webmethod. Puisque vous ne voulez accepter une seule méthode, je soupçonne que vous pouvez sortir avec elle en présentant les éléments suivants:
Dont il peut raisonnablement essayez d'attribuer une valeur à "l'ordre" paramètre de votre webmethod. À défaut, la soumission
et puis la désérialisation de l'aide JSON.NET devrait fonctionner, mais il est plus laid, essayez donc le premier exemple de la première. C'est mon meilleur coup.
OriginalL'auteur David Hedlund
C'est possible. Je ne suis pas si bon à expliquer des trucs, je vais juste vous montrer mon code d'exemple:
Javascript:
Code C# derrière
Mon code n'est pas que belle, mais j'espère que vous obtenez le sens de l'il.
OriginalL'auteur Martin Larsson
Je suis récemment allé à travers cette question avec un complexe d'objet JSON je voulais deserilize dans mon contrôleur. La seule différence est que j'ai été en utilisant le .la méthode toJSON plugin sur le client plutôt que d' .stringify.
La réponse la plus simple:
Maintenant, en tant que solution à long terme, nous avons créé une coutume ActionFilterAttribute pour gérer ces cas. Il détecte le JSON paramètres et les poignées deserilizing l'objet et de la cartographie pour l'action. Vous pouvez faire la même chose.
OriginalL'auteur Nick Riggs