Accéder à un contrôle de contenu en C# lors de l'utilisation des Pages Maîtres
Bonne journée à tous,
Je suis la construction d'une page dans ASP.NET et l'aide de Pages Maîtres dans le processus.
J'ai un Contenu Place de Titulaire nom "cphBody" dans ma Page principale, qui va contenir le corps de chaque Page pour laquelle cette Page est la Page Maître.
Dans le ASP.NET page Web, j'ai une balise de Contenu (faisant référence à "cphBody") qui contient aussi quelques contrôles (boutons, Infragistics commandes, etc.), et je veux accéder à ces commandes dans le fichier Code-behind. Cependant, je ne peux pas le faire directement (ce.myControl ...), car ils sont imbriqués dans la balise de Contenu.
J'ai trouvé une solution avec la méthode FindControl.
ContentPlaceHolder contentPlaceHolder = (ContentPlaceHolder) Master.FindControl("cphBody");
ControlType myControl = (ControlType) contentPlaceHolder.FindControl("ControlName");
Qui fonctionne très bien. Cependant, je suis à soupçonner que ce n'est pas une très bonne conception. Avez-vous les gars savent d'une façon plus élégante de le faire?
Merci!
Guillaume Gervais.
- Essayez-vous d'accéder au contrôle du contenu de la page code-behind, ou le master code de la page de derrière?
- Le Contenu de la page Code-behind.
- C'est bizarre. Vous devriez être en mesure d'accéder directement vos commandes à partir de votre contenu de la page code-behind, à moins qu'ils sont créés de manière dynamique et ajouté.
Vous devez vous connecter pour publier un commentaire.
Rick Strahl a une bonne explication (et des exemples de code) ici - http://www.west-wind.com/Weblog/posts/5127.aspx
J'essaie de l'éviter FindControl à moins qu'il n'y a pas d'alternative, et il y a souvent plus propre chemin.
Que diriez-y compris le chemin d'accès à votre page principale en haut de votre page enfant
Qui vous permettra d'appeler directement le code de votre page maître de code derrière.
Puis, à partir de la page principale de code derrière vous pourriez faire un retour de propriété de votre contrôle, ou de faire une méthode sur la page principale d'obtenir votre contrôle, etc
Fait référence à une étiquette sur la page principale
Utilisation:
GridView
dans ma page de contenu et je veux être en mesure de mettre à jour qu'à partir de ma MasterPage.Rien à faire différent. Il suffit d'écrire ce code sur la page enfant pour accéder à la page principale de l'étiquette de contrôle.
J'utilise ce code pour accéder à des fichiers de manière récursive:
Salut juste pensé que je devais partager ma solution, trouvé ce qui fonctionne pour accéder à un "Contrôle" qui est à l'intérieur d'un < asp:Panel> qui est à la ContentPage", mais à partir de C# code-behind de la "MasterPage'. Espérons que cela aide certains.
ajouter un < asp:Panel> avec un ID="PanelWithLabel" et runat="server" à votre ContentPage.
à l'intérieur du Panneau, ajouter un < asp:Label> control ID="MyLabel".
écrire (ou de le copier /coller ci-dessous) d'une fonction dans votre MasterPage Code-behind comme suit: (ce accède à l'étiquette de contrôle, à l'intérieur du Panneau, qui sont tous les deux sur le ContentPage, à partir de la page code-behind et les modifications de son texte une zone de texte sur la page 🙂