2010-09-02 9 views
0

J'ai une poignée de WebMethods publics statiques auxquels j'accède avec Javascript (directement), habituellement par jQuery. Cela fonctionne, et je suis satisfait des résultats (et de ne pas avoir à faire avec le framework AJAX). Ce que je voudrais pouvoir faire est de définir mon propre objet mock-JSON à passer entre JS et ASP (c'est un projet web .NET 2.0, CS et VB, et je fais aussi référence à un 3.5 projet non-web pour quand j'ai besoin de 3.5 services). Mais j'ai des tonnes de problèmes:Sérialisation d'objet personnalisée dans ASP?

  • Je ne peux pas spécifier un [DataContract], il me dit que je peux manquer un assembly.
  • Je n'arrive pas à comprendre comment utiliser une interface ISerializable, et je ne sais pas si cela résoudra mon problème ou non. En particulier, l'ajout de choses via GetObjectData ne semble pas faire de squat lorsque j'utilise JavaScriptSerializer; Je reçois toujours "{}".
  • Marquer ma classe avec [Serializable] ne semble rien faire.
  • Je ne sais pas vraiment quelles sont les autres options disponibles.

Certains code:

[Serializable] 
public class MyClass : ISerializable 
{ 
    void ISerializable.GetObjectData(SerializationInfo info, StreamingContext context) 
    { 
     info.AddValue("test", "contents"); 
    } 
} 

// in my ASP page 
MyClass tmp = new MyClass(); 
JavaScriptSerializer s = new JavaScriptSerializer(); // System.Web.Script.Serialization.JavaScriptSerializer, to be specific. 
s.Serialize(tmp) // "{}" whether here, or by returning a MyClass instance from my WebMethod function (as Object, MyClass, etc.) 

Je suis assez nouveau pour CS/VB et .NET, alors pardonnez-moi si je me manque quelque chose douloureusement évident, et c'est la raison pour laquelle je ne trouve rien en ligne ^^; Donc, ma question claire est: comment puis-je créer mes propres classes sérialisables en ASP avec WebMethods?

Répondre

0

Avez-vous envisagé de créer peut-être un service WCF? Il a json sérialisation out-of-the-box.

+0

N'avait pas, non. Après avoir farfouillé, on dirait que c'est plutôt significativement plus grand/plus compliqué que mes objectifs (un objet JSON meilleur/simplifié, d'autant plus que .net 2 n'en a pas). À moins que ce soit plus simple que ça en a l'air? Dans tous les cas, ASP.NET 2 fait aussi de la sérialisation JSON, je préférerais ne pas convertir entre leurs formats et les miens pour chaque appel (peut-être des centaines) quand cela peut/devrait être fait directement. – Groxx

+0

Qu'en est-il de DataContractJsonSerializer? – CyberDude

+0

Je n'ai pas de System.Runtime.Serialization.Json dans le projet 3.5 ... comment l'obtenir? – Groxx

Questions connexes