2009-03-23 7 views
1

Peut-on accéder à un contrôle identifiant enregistré dans un ASPX pour un autre contrôle ascx ,,Peut-on accéder à un contrôle identifiant enregistré dans un ASPX pour un autre contrôle ascx ,,

+0

Je pense que vous devez être un peu plus précis sur la relation entre ASPX et ASCX et quel type de contrôle il est (et ce que "enregistré" signifie dans ce contexte pendant que nous y sommes). – Rich

+0

par ex: dans index.aspx un identifiant de contrôle de plan du site est enregistré i besoin d'accéder à ID 'acsSiteMap' dans d'autres usercontrol (ascx) – peter

Répondre

0

Si vous êtes dans un ascx et ont besoin d'accéder à un contrôle dans la page ASPX parent, vous pouvez le faire comme suit:

Control myControl = this.Page.FindControl("myControl"); 

Cependant, il mérite d'être étudié exactement Pourquoi devez-vous le faire? En règle générale, le contrôle utilisateur enfant n'a pas intérêt à effectuer des actions dans la page parente. Une approche alternative consisterait à faire en sorte que l'ascx lance un événement dans un scénario donné, auquel la page parent serait à son tour abonnée (et potentiellement effectuer une action interne basée sur l'événement). Cela permettrait l'interopérabilité entre la page et le contrôle utilisateur tout en encapsulant correctement les fonctionnalités de chacun.

+0

merci pour les commentaires ,, nous avons besoin de générer une fonction récursive si elle contient plus d'un contrôle – peter

0

Votre question est pas très claire, mais je supposez que vous essayez d'accéder au contrôle d'une page depuis l'intérieur d'un contrôle .ascx, ai-je raison?

Si c'est la question, la réponse est non, vous ne pouvez pas. Ou vous au moins, vous ne devriez pas (comme d'autres réponses ont montré en fait que vous pouvez le faire)

Vous ne devriez pas le faire parce qu'un contrôle .ascx est destiné à être réutilisable. Il doit donc être indépendant de toute page, il doit avoir un sens par lui-même. Par exemple, pouvez-vous imaginer un contrôle de zone de texte qui a besoin d'un élément avec un nom dans la page où il est utilisé?

Si vous avez besoin du contrôle pour accéder aux données de la page, vous devez le faire dans l'autre sens. La page doit alimenter les données à contrôler via une propriété publique.

espoir qui aide

+0

mais la classe 'Control' dans l'espace de noms System.Web.UI définira toutes les propriétés, les méthodes, les événements partagés par les commandes du serveur asp.net, maintenant j'ai recherché sur Google – peter

+0

Oui, vous avez raison. Mais, comment cela change-t-il quelque chose? Peut-être n'ai-je toujours pas compris votre question? – rgargente

Questions connexes