2010-02-22 8 views
1

J'essaie d'envoyer un objet créé en JavaScript à une méthode de page ASP.NET. Cet objet reflète les propriétés d'un objet métier personnalisé existant. J'espérais donc pouvoir transmettre un seul objet au lieu d'un paramètre pour chaque propriété. Je reçois une erreur « méthode web inconnue savepart lors d'une tentative d'utiliser cette méthodeEnvoi d'un objet complexe en tant que paramètre à Asp.Net PageMethod

Javascript.

function() { 
    var pt = { Id: 1, Onhand: 20, LowPoint: 30, __type: 'Custom.Objects.Part'}; 

    $.ajax({ 
     type: 'POST', 
     url: 'partlist.aspx/SavePart', 
     data: JSON.stringify(pt), 
     contentType: 'application/json; charset: utf-8;' 
     dataType: 'json', 
     success: function(results) { alert('Success!'); } 
    }); 
} 

code Derrière:

<WebMethod()> _ 
Public Shared Function SavePart(pt as Custom.Objects.Part) as Boolean 
    Dim repo as new PartRepository() 
    return repo.Save(pt) 
End Function 

J'utilise une autre PageMethod qui accepte juste un int

Répondre

2

J'ai fini par résoudre mon problème en envoyant l'objet de cette façon par la commande ajax jQuery:

data: '{"pt":' + JSON.stringify(pt) + '}' 

ce qu'il sérialisés automatiquement l'objet et retourné à mon WebMethod. Lorsque j'ai essayé d'envoyer l'objet tel quel, j'ai reçu une erreur disant "primitive JSON invalide".

+0

Ah ... ça a du sens. Le simple envoi de pt a probablement amené le désérialiseur à tenter de passer chaque propriété de l'objet à la méthode web en tant que paramètres séparés. –

Questions connexes