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
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.
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