J'ai un UserControl que je veux inclure dans une page plusieurs fois par programme en fonction de certaines règles métier. Actuellement, le contrôle a une fonction JavaScript qui doit être appelée sur l'événement ASP.NET AJAX pageLoad
.ASP.NET AJAX et UserControls: gestion des scripts côté client
J'utilise un modèle où la page principale a une fonction pageLoad
qui appelle une fonction contentPageLoad
sur n'importe quel ContentTemplate, si la fonction existe. Le ContentTemplate qui contient le UserControl en question serait alors responsable de l'appel de la fonction appropriée sur UserControl pendant cet événement.
Pour l'instant, le JavaScript est en ligne dans le .ascx
pour le UserControl, mais j'ai le sentiment que je vais devoir utiliser la propriété Page.ClientScript
pour l'injecter via le code derrière. Ma question est: comment est-ce que je m'assure que mes noms de fonction ne sont pas obnubilés, et m'assure que la méthode appropriée est appelée chaque UserControl?
FYI: le code qui doit être exécuté pour chaque UserControl est un bloc de jQuery qui crée un contrôle Multi-Select à partir d'un code HTML standard <select>
.
EDIT:RegisterStartupScript
a été suggéré, mais cela s'exécute avant que le chargement du DOM soit terminé. Envelopper la fonction dans un fichier jQuery Document.ready() ne semble pas utile. Le contrôle utilisateur s'exécute à l'intérieur d'un UpdatePanel
, donc je n'ai pas vraiment le choix sur la façon d'appeler ce script.
Ce fut mon premier instinct, mais 'ClientId' n'existe pas dans le contexte de la UserControl. Aurais-je besoin d'hériter d'une certaine classe ou interface? – technomalogical
Oups, avait une faute de frappe (ClientID devrait avoir un D majuscule) mais je ne sais toujours pas comment gérer l'appel de chacune de ces fonctions sur le chargement de la page AJAX (à ma connaissance, le client onLoad n'arrivera que sur la première page charge. – technomalogical
mise à jour réponse - page_load se produira réellement sur chaque publication asynchrone, ce que je pense est ce que vous voulez. –