2009-04-10 6 views
4

Je voulais partager quelque chose que j'ai appris aujourd'hui avec vous tous. Ma question était:Transmettre l'objet JSON à la méthode Web

Pouvez-vous passer un objet JSON du code JavaScript à une méthode de page .NET? Par exemple:

var task = { 
    Title: $("#titlenew input", $(newTaskRow)).val(), 
    StartDate: $("#startnew input", $(newTaskRow)).val(), 
    EndDate: $("#endnew input", $(newTaskRow)).val(), 
    EstimatedHours: $("#esthrsnew input", $(newTaskRow)).val(), 
    PredecessorsOutlineNumbers: $("#depnew input", $(newTaskRow)).val(), 
    OutlineNumber: $("#ordernew", $(newTaskRow)).text() 
    }; 
    PageMethods.AddTask(task, saveNewTaskCompleted, saveNewTaskFailed); 

Et si vous le pouvez, quel type d'objet .NET ma méthode Web doit-elle accepter?

J'ai découvert que oui, vous pouvez passer un objet JSON à une méthode de page, et il se présente comme un dictionnaire (Of String, String). Donc, ma signature de la méthode web ressemble à ceci:

<System.Web.Services.WebMethod()> _ 
Public Shared Sub AddTask(ByVal taskJson As Dictionary(Of String, String)) 

    Dim oTask As New Task() 
    oTask.Title = taskJson("Title") 
    ' all other accesses to the JSON object here 

End Sub 
+0

Cette est un site Q & A, pas un blog. –

+0

De la FAQ pour stackoverflow: "Il est également très bien de poser et de répondre à votre propre question de programmation, mais prétendez que vous êtes sur Jeopardy: exprimez-le sous la forme d'une question." Tu n'as pas fait ça. Peut-être réécrire comme une question/réponse. – artlung

+0

Mon mauvais - dois-je poser la question et poster la réponse séparément? –

Répondre

0

Une réponse détaillée à une question similaire indique que la combinaison de JQuery & Json2.stringfy() peut être utilisée pour envoyer un type complexe aux méthodes côté serveur.

Et sur le côté serveur, vous aurez seulement besoin de mettre le type requis dans la signature Méthode

(ex. Foo (MyType obj) {...})

How to send JSON object to asp.net web service and process the data there?

Questions connexes