2008-09-09 4 views
0

Je travaille sur une application Silverlight où je souhaite tirer parti de la bibliothèque Microsoft ASP.NET AJAX Client. J'appelle la bibliothèque en utilisant le pont HTML qui fait partie de Silverlight 2. Silverlight a obtenu un excellent support pour le passage de types entre JavaScript et Managed Code, mais maintenant je me suis heurté à un problème.Passez le type Silverlight à Microsoft AJAX et validez la validation des paramètres

Microsoft ASP.NET AJAX Client Libraries inclut un «système de type», et l'une des choses que le framework fait est de valider que les paramètres sont de type correct. La fonction spécifique que je vous appelle est le Sys.Application.addHistoryPoint, et le code de validation ressemble à ceci:

var e = Function.validateParams(arguments, [ 
    {name: "state", type: Object}, 
    {name: "title", type: String, mayBeNull: true, optional: true} 
]); 

J'ai essayé en passant toutes sortes de types CLR comme paramètre d'état (C#, [struct ScriptableTypes ], Les types de dictionnaire etc. Et chaque fois que j'obtiens l'erreur: "Sys.ArgumentTypeException: L'objet de type 'Function' ne peut pas être converti en type 'Object'

Cette erreur vient évidemment de la validation des paramètres ... Mais pourquoi ASP.NET AJAX pense que mes types sont des fonctions? Est-ce que quelqu'un comprend la validation de type dans MS AJAX?

Je sais que c Faire des solutions de contournement comme appeler HtmlPage.Window.Eval ("...") et passer mon intégration JS comme des chaînes, mais je ne veux pas faire cela. Je veux passer un vrai type .NET comme paramètre d'état.

Répondre

1

J'ai trouvé un assez bon aperçu de ce here, mais même cette vue d'ensemble semblait couvrir tous les scénarios sauf celui que vous mentionnez. Je me demande si cela ne peut pas être fait parce que les objets javascript sont vraiment des fonctions (plus ou moins). Et si vous écriviez une fonction wrapper qui pourrait créer l'objet state en utilisant une chaîne?

Questions connexes