2009-01-20 40 views
6

¿Se puede acceder a los elementos de la página maestra desde la página de contenido?ASP.NET - Acceso a los elementos de la página maestra desde la página de contenido

Digamos que tengo MasterPage1 y ContentPage1 que hereda de MasterPage1, y MasterPage1 tiene un botón: Button1.

¿Puedo cambiar la propiedad de ese botón de la página de contenido, por ejemplo para hacer que el Botón1 sea invisible, inactivo, etc.? ¿Cómo puedo lograr esto?

estoy usando .net2.0

Respuesta

9

usted tiene que poner una referencia a la MasterPage en su margen de beneficio control de página/usuario.

<%@ Reference VirtualPath="..." %> 

Luego, en el código subyacente, sólo tire la Page.MasterPage a su MasterPage y acceder a sus propiedades.

MyMasterPage myMasterPage = (MyMasterPage)Page.Master; 
9

Sí ... si tiene que hacerlo desde la página aspx utilizando el MasterPage sería:

Button myButton = (Button)Master.FindControl("myButton"); 
myButton.Visible = false; 
3

Sí se puede, y hay unos cuantos métodos para esto.

El enfoque que uso es crear métodos públicos dentro de la página maestra que harán la modificación/acceso a los datos dentro de la página maestra. Por ejemplo, normalmente desea modificar el estilo de enlace de la página actual/categoría Estoy en, así que tengo un método en mi página maestra como esta:

Public Sub SetNavigationPage(ByVal MenuName As String) 

     DirectCast(Me.FindControl(MenuName), HyperLink).CssClass = "MenuCurrent" 

    End Sub 

Luego, en mi página de contenido, simplemente acceder a este método como tal:

Dim myMaster As EAF = DirectCast(Me.Master, EAF) 
myMaster.SetNavigationPage("hypViewEmployee") 

... donde EAF es el nombre de la clase de mi página maestra.

Un problema interesante que he encontrado es que he tenido complicaciones al utilizar la propiedad Visibility de los controles .NET cuando intento mostrar/ocultarlos de esta manera. Esto se debe a la representación de páginas maestras y de contenido. Para resolver esto, configuré un estilo CSS básico tanto para visible como oculto y configuré la propiedad CssClass en consecuencia.

+0

+1. Gracias por los consejos para cambiar CssClass. También lo encuentro muy útil. De alguna manera me olvidé de dejar el comentario el día que se formuló la pregunta – kristof

3

Master.FindControl ("myButton"). Visible = False

Tenga cuidado de que el control que se utiliza para ejecutar el comando anterior, no debe estar dentro de un panel de actualización.

+0

, ¿cómo podemos deshabilitar el control dentro de un panel de actualización – ush

+0

? Entonces, ¿cómo podemos deshabilitar los controles en un panel de actualización? – ush

Cuestiones relacionadas