Question

Je travaille sur une application Silverlight dans laquelle je souhaite profiter de la bibliothèque client Microsoft ASP.NET AJAX.J'appelle la bibliothèque en utilisant le HTML Bridge qui fait partie de Silverlight 2.Silverlight bénéficie d'un excellent support pour la transmission de types entre JavaScript et le code managé, mais je me suis maintenant heurté à un problème.

Les bibliothèques client Microsoft ASP.NET AJAX incluent un « système de types » et l'une des tâches du framework est de valider que les paramètres sont du type correct.La fonction spécifique que j'appelle est la 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é de transmettre toutes sortes de types CLR comme paramètre d'état (structures C#, [ScriptableTypes], types de dictionnaire, etc.Et à chaque fois j'obtiens l'erreur :

" Sys.ArgumentTypeException :L'objet de type « Fonction » ne peut pas être converti en type « Objet »

Cette erreur vient évidemment de la validation des paramètres...Mais POURQUOI ASP.NET AJAX pense-t-il que mes types sont des fonctions ?Quelqu'un comprend-il la validation de type dans MS AJAX ?

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

Était-ce utile?

La solution

J'ai trouvé un assez bon aperçu de ceci ici, mais même cet aperçu semblait couvrir tous les scénarios sauf celui que vous mentionnez.Je me demande si cela ne peut pas être fait car les objets javascript sont en réalité des fonctions (plus ou moins).

Et si vous écriviez une fonction wrapper capable de créer l'objet d'état à l'aide d'une chaîne ?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top