Compartir a través de


Cómo: Hacer referencia al contenido de la página principal ASP.NET

Actualización: noviembre 2007

Puede escribir código en páginas de contenido que hagan referencia a las propiedades, métodos y controles de la página principal con algunas restricciones. La condición necesaria para poder hacer referencia a las propiedades y a los métodos es que se deben declarar como miembros públicos de la página principal. Se incluyen las propiedades y los métodos públicos. Puede hacer referencia a los controles de la página principal, con independencia de si se hace referencia a los miembros públicos.

Para hacer referencia a un miembro público de la página principal

  1. Agregue una directiva @ MasterType a la página de contenido. En la directiva, establezca el atributo VirtualPath en la ubicación de la página principal, como en este ejemplo:

    <%@ MasterType virtualpath="~/Masters/Master1.master" %>
    

    Esta directiva hace que la propiedad Master de la página de contenido tenga establecimiento inflexible de tipos.

  2. Escriba código que utilice el miembro público de la página principal como miembro de la propiedad Master, como en este ejemplo, donde se asigna el valor de una propiedad pública denominada CompanyName desde la página principal a un cuadro de texto de la página de contenido:

Para hacer referencia a un control de la página principal

  • Utilice el método FindControl, que usa el valor devuelto por la propiedad Master como contenedor de nombres.

    En el ejemplo de código siguiente se muestra el uso del método FindControl para obtener una referencia a dos controles de la página principal, un control TextBox y un control Label. Dado que el control TextBox está dentro de un control ContentPlaceHolder, debe obtener primero una referencia a ContentPlaceHolder y, a continuación, utilizar su método FindControl para buscar el control TextBox.

    Sub Page_Load()
        Dim mpContentPlaceHolder As ContentPlaceHolder
        Dim mpTextBox As TextBox
        mpContentPlaceHolder = _
            CType(Master.FindControl("ContentPlaceHolder1"), _
            ContentPlaceHolder)
        If Not mpContentPlaceHolder Is Nothing Then
            mpTextBox = CType(mpContentPlaceHolder. _
                FindControl("TextBox1"), TextBox)
            If Not mpTextBox Is Nothing Then
                mpTextBox.Text = "TextBox found!"
            End If
        End If
    
        ' Gets a reference to a Label control not in a 
        ' ContentPlaceHolder
        Dim mpLabel As Label
        mpLabel = CType(Master.FindControl("masterPageLabel"), Label)
        If Not mpLabel Is Nothing Then
            Label1.Text = "Master page label = " + mpLabel.Text
        End If
    End Sub
    
    void Page_Load()
    {
        // Gets a reference to a TextBox control inside 
        // a ContentPlaceHolder
        ContentPlaceHolder mpContentPlaceHolder;
        TextBox mpTextBox;
        mpContentPlaceHolder = 
          (ContentPlaceHolder)Master.FindControl("ContentPlaceHolder1");
        if(mpContentPlaceHolder != null)
        {
            mpTextBox = 
                (TextBox) mpContentPlaceHolder.FindControl("TextBox1");
            if(mpTextBox != null)
            {
                mpTextBox.Text = "TextBox found!";
            }
        }
    
        // Gets a reference to a Label control that not in 
        // a ContentPlaceHolder
        Label mpLabel = (Label) Master.FindControl("masterPageLabel");
        if(mpLabel != null)
        {
            Label1.Text = "Master page label = " + mpLabel.Text;
        }
    }
    

Vea también

Conceptos

Información general sobre las páginas principales ASP.NET

Trabajar con las páginas principales ASP.NET mediante programación

Otros recursos

Obtener acceso a controles ASP.NET mediante programación