Comment accéder de manière pratique à un contrôle dans un emboîté page principale ?
L'accès aux contrôles des pages maîtres est généralement simple :
Dim ddl As DropDownList = Master.FindControl("ddl")
Cependant, lorsque ma configuration est la suivante, le contrôle est introuvable, probablement parce qu'il se trouve dans un fichier de type content
bloc :
1 Root Master
<asp:ContentPlaceHolder ID="cphMainContent" runat="server" />
2 maîtres emboîtés
<%@ Master Language="VB" MasterPageFile="~/Root.master" AutoEventWireup="false" CodeFile="Nested.master.vb" Inherits="Nested" %>
<asp:Content ID="MainContent" ContentPlaceHolderID="cphMainContent" runat="server">
<asp:DropDownList ID="ddl" runat="server" DataTextField="Text" DataValueField="ID"/>
</asp:Content>
3 Page de contenu VB.NET
Dim ddl As DropDownList = Master.FindControl("ddl")
Solution de rechange
J'ai trouvé une solution en remontant l'arbre et en trouvant l'emplacement du contenu de la racine. cphMainContent
et ensuite chercher le contrôle à l'intérieur.
cphMainContent = CType(Master.Master.FindControl("cphMainContent"), ContentPlaceHolder)
Dim ddl As DropDownList = cphMainContent .FindControl("ddl")
Cette solution semble toutefois très détournée et inefficace.
Est-il possible d'accéder au contrôle directement à partir de l'application content
de la page principale ?