ASP.NET - Tipado fuerte al acceder a una MasterPage

·2 min de lectura·

A veces puede resultar interesante acceder desde una página de contenidos a propiedades de su página maestra. Hoy he encontrado un truco para conseguir este acceso con la seguridad que proporciona un tipado fuerte.
Como sabemos, la propiedad Master de las páginas de contenidos, a través de la cual es posible acceder a la página maestra, es por defecto del tipo MasterPage. Esto es así porque todas las masters que creamos heredan de esta clase, y es una abstracción bastante acertada la mayoría de las veces. De hecho, es perfectamente posible hacer un cast al tipo correcto desde el código de la página para acceder a alguna de las propiedades públicas que le hayamos definido, así:

  protected void Page_Load(object sender, EventArgs e)
{
MaestraContenidos master = Master as MaestraContenidos;
master.Titulo = "Título";
}

Pues bien, mediante la directiva de página MasterType es posible indicar de qué tipo será esta propiedad Master, de forma que no será necesario hacer el cast. En la práctica, en el ejemplo anterior, podríamos hacer directamente Master.Titulo="Título", sin realizar la conversión previa.
La directiva podemos utilizarla en el archivo .ASPX, haciendo referencia al archivo donde está definida la página maestra cuyo tipo usaremos para la propiedad:

O también podemos hacerlo indicando directamente el tipo (ojo, que hay que incluirlo con su espacio de nombres completo):

Por último, algunas contraindicaciones. Si váis a usar esta técnica, tened en cuenta que:

  • si decidís cambiar la página maestra en tiempo de ejecución, en cuanto intentéis acceder a la propiedad Master, vuestra aplicación reventará debido a que el tipo no es el correcto.

  • si cambiáis la maestra a la que está asociada una página de contenidos, tenéis que acordaros de cambiar también la directiva MasterType de la misma para que todo funcione bien.

Comentarios (0)

Sé el primero en comentar.

ASP.NET - Lección 4

·1 min de lectura

ASP.NET permite crear páginas maestras (Master Pages) que actúan como plantillas para todo el sitio web. Estas páginas pueden contener controles y código del lado del servidor, y sus propiedades están disponibles en todas las páginas ASPX que las utilizan. Al modificar una Master Page, los cambios se reflejan automáticamente en todas las páginas dependientes, facilitando el mantenimiento. Además, el entorno de diseño WYSIWYG muestra la presentación final, lo que simplifica la creación y edición de la interfaz.