Si estás tratando de usar FindControl
para encontrar un control que está en una página que está basada en una MasterPage, utiliza la siguiente notación para encontrarlo:
Page.Master.FindControl("NombreDeLaForma").FindControl("NombreDelContentPlaceHolder").FindControl("ControlQueBuscas")
Ejemplo, supón que tu MasterPage es:
- <%@ Master Language="VB" CodeFile="Ppal.master.vb" Inherits="Ppal" %>
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml" >
- <head runat="server">
- <title>Titulo</title>
- </head>
- <body>
- <form id="form1" runat="server">
- <asp:contentplaceholder id="Cuerpo" runat="server">
- </asp:contentplaceholder>
- </form>
- </body>
- </html>
También supón que tienes una página basada en ese MasterPage, cuyo código es:
- <%@ Page Language="VB" MasterPageFile="~/Ppal.master" AutoEventWireup="false" CodeFile="Ejemplo.aspx.vb" Inherits="Ejemplo" title="Untitled Page" %>
- <asp:Content ID="Content1" ContentPlaceHolderID="Cuerpo" Runat="Server">
- <asp:TextBox ID="CajaTexto" runat="server"></asp:TextBox>
- </asp:Content>
El código que usarías para encontrar CajaTexto
y modificar alguna de sus propiedades sería este:
- Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
- Dim Caja As TextBox
- Caja = Page.Master.FindControl("form1").FindControl("Cuerpo").FindControl("CajaTexto")
- Caja.Text = "Hola"
- End Sub