2010-03-25 3 views
2

Je travaille actuellement sur une application ASP.NET AJAX. Ayant décidé de ne pas utiliser UpdatePanels pour des raisons évidentes, quelles sont mes alternatives? Cette application a des pages construites dynamiquement et donc la plupart ou tous les composants de la page existent en tant que contrôles utilisateur.Alternatives à UpdatePanel sur un contrôle utilisateur (page ASCX)

Je dois effectuer des appels AJAX à partir de la page de contrôle utilisateur ASCX. Et comme les contrôles utilisateur ASCX ne peuvent pas contenir de méthodes de page, quelles autres options ai-je?

Ou, existe-t-il un moyen de contourner l'utilisation des méthodes de page dans la page ASCX?

Répondre

0

La meilleure façon (que j'ai découvert) est 1. Placez vos PageMethods sur la page parent 2. Lorsque la PageMethod complète, laissez votre contrôle utilisateur savoir via une méthode JS qu'il peut l'appel PageMethod a terminé 3. Puis un ICallbackHandler peut être implémenté sur le contrôle utilisateur pour effectuer un rappel AJAX sur la méthode du contrôle utilisateur

Dans mon cas, j'ai besoin de mettre à jour certaines valeurs sur le contrôle utilisateur après l'exécution de PageMethods, donc je construis mon contrôle utilisateur en utilisant HtmlOutputWriter pour mettre à jour le contenu.

Fonctionne pour moi!

2

Vous ne pouvez pas appeler les méthodes web à partir d'un UserControl comme vous l'avez dit. La raison en est que les méthodes marquées avec l'attribut WebMethod doivent également être statiques. UserControls ne le supporte pas. Si vous n'êtes pas prêt à utiliser un UpdatePanel, vous n'avez pas beaucoup d'options.

Vous pouvez passer des appels AJAX via jQuery à web services? Ce serait une option ...

UpdatePanel Les contrôles utilisés avec UpdateMode="Conditional" vous donnent un assez bon contrôle sur ce qui se passe avec les rappels et sont toujours une solution raisonnable. Il ne sera pas aussi léger qu'un appel ajax droit, mais sera facile à entretenir, etc.

0

jQuery AJAX est ma recommandation, utilisée avec les services Web fournit une bonne solution.

Questions connexes