Tipando el acceso a los controles de nuestra Master Page desde propiedades creadas por nosotros

Como bien sabéis podemos acceder a los controles de nuestra Master Page por medio del método FindControl, pero esto nos obliga a hacer un casting del tipo de control que queremos acceder y a saber el ID del control.

Imaginaros que tenemos un cliente que tiene 2 compañias, Compañía1 y Compañía2 y lo único que debe cambiar de nuestra página maestra es el Logo, dependiendo si el usuario pertenece a una o a otra. Entonces desde la página de inicio podríamos hacer:

Image logo = (Image)Master.FindControl("ImageLogoCorporativo");
 
if (PerteneceCompania1(User.Identity.Name))
{
    logo.ImageUrl = "Compania1.gif";
}
else
{
    logo.ImageUrl = "Compania2.gif";
}

El código es correcto pero el programador debe saber como se llama el control y de que tipo es y además cada vez que se quiera acceder debemos hacer un casting al tipo Image, bla,bla.....

Para facilitar esta tarea y hacer nuestro código mas fácil y legible, podemos crearnos una propiedad en la página maestra del tipo Image para acceder a la imagen del logo de la página maestra:

public Image Logo
{
    get { return ImageLogoCorporativo; }
}

Y ahora podríamos acceder directamente desde la página contenedora:

mastertype

¿Pero que pasa? No está, si yo la he declarado como pública...

El problema es que para acceder a las propiedades de la página maestra necesitamos incluir una directiva de página MasterType en la página contenedora en la que queremos acceder a las propiedades de la página maestra:

<%@ MasterType VirtualPath="~/MasterPage.master" %>

mastertype2

Y ahora sí:

mastertype3 

Como véis el Intellisense nos reconoce la propiedad de tipo Image de nuestra página maestra y nuestro código queda más legible.

Este método de acceso lo podemos aplicar tambiéna variables privadas ;)

Un saludo

Published 27/7/2007 12:32 por Luis Ruiz Pavón
Comparte este post:
http://geeks.ms/blogs/lruiz/archive/2007/07/27/tipando-el-acceso-a-los-controles-de-nuestra-master-page-desde-propiedades-creadas-por-nosotros.aspx

Comentarios

# re: Tipando el acceso a los controles de nuestra Master Page desde propiedades creadas por nosotros

Hola Luis,

Otra alternativa para no añadir la referencia es hacer un "casteo" de la página maestra:

((MasterPage)Master).Logo

Un saludo.

Monday, July 30, 2007 9:44 AM por Tori

# re: Tipando el acceso a los controles de nuestra Master Page desde propiedades creadas por nosotros

Gracias por el aporte Tori, se agradece ;)

Salu2

Monday, July 30, 2007 10:41 AM por Luis Ruiz Pavón

# re: Tipando el acceso a los controles de nuestra Master Page desde propiedades creadas por nosotros

Excelentísimo aporte lo felicito, la pedagogía es su campo !!!!  

Wednesday, October 01, 2008 5:48 PM por Rodrigo

# Toolbar en Master.Page

Hola, compañero, soy programador de aplicaciones de escritorio y estoy migrando ASP.NER con C#, por no conocer el lenguaje ASP NET EL LENGUAJE me ha costado LA MIGRACIÓN

Lo que necesito es es colocar en el master page un toolbar con los siguientes botones nuevo, salvar, buscar, salir, etc. lo que necesito es cuando el usuario pulse un boton del toolbar ejecute el metodo del webform activio

Tuesday, February 24, 2009 1:37 AM por eDGAR

# re: Tipando el acceso a los controles de nuestra Master Page desde propiedades creadas por nosotros

Gracias por el TIP, funciona de maravilla, desde Honduras.

Tuesday, July 19, 2011 6:01 PM por Juan de Dios