2010-01-13 6 views
3

J'ai une ASP.NET PageMethod avec la signature suivante:Passant JSON à un PageMethod qui attend une liste <T> paramètres

<WebMethod()> _ 
Public Shared Function SaveCodes(ByVal codes As List(Of Code)) As String 

Je suis en train de passer un objet JSON à la PageMethod du côté client, mais J'obtiens une erreur que le type String ne peut pas être converti en type de liste <Code>.

Voici le JSON que je construis sur le client et l'envoi de la méthode:

{
'codes': {{
"COMPANYID": « 00000000-0000-0000-0000- 000000000000 "," customerType ":" 1 "," code ":" 11 "},
{" companyID ":" 00000000-0000-0000-0000-000000000000 "," customerType ":" 1 "," code " : "21"}}

}

Voici mon appel PageMethod, (objets est le JSON chaîne ci-dessus):

PageMethods.SaveCodes(objects, successFn, errorFn); 

J'ai été en mesure de passer de simples types de données et une seule instance de la classe code, mais je ne peux pas sembler trouver la magie de passer d'une liste à la méthode du serveur. Quelqu'un peut-il me montrer ce que je fais mal?

Répondre

3

J'ai été capable de le comprendre. La notation correcte est listée ci-dessous. La pièce principale qui manquait était la propriété __type pour chaque objet. J'ai dû fouiller dans une liste qui a été retournée à partir d'un PageMethod pour le trouver.

{"codes": 
[ 
{"CompanyID":"00000000-0000-0000-0000-000000000000","Code":"11 ","CustomerType":"1","__type":"Code"}, 
{"CompanyID":"00000000-0000-0000-0000-000000000000","Code":"21 ","CustomerType":"1","__type":"Code"} 
] 
} 
+0

J'ai fini par écrire un billet de blog sur ce point pour une description plus détaillée: http://www.brentman.com/blog/2010/01/15/asp-net-pagemethods-using-generic Listes –

+0

Merci! pour ceci et surtout votre article de blog. Juste m'a sauvé une tonne de temps. – kenswdev