c# asp.net master-pages user-controls

c# - ¿Cómo hacer referencia a una página maestra desde un control de usuario?



asp.net master-pages (3)

¿Has probado Page.FindControl ("nombre") en el control de usuario?

Estoy buscando una forma de (preferiblemente) escribir con fuerza una página maestra desde un control de usuario que se encuentra en una página de contenido que usa la página maestra.

Lamentablemente, no puede usar esto en un control de usuario:

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

Intento acceder a una propiedad de la página maestra desde el control del usuario y preferiría no tener que pasar la propiedad de la página maestra a la página de contenido para el control del usuario porque las páginas de contenido múltiples usan el mismo control de usuario. Un cambio, un lugar diferente.


La mejor forma de hacerlo que he encontrado es crear una clase personalizada basada en UserControl, darle una propiedad Master con un acceso get que navegue por this.Page.Parent hasta que deje de encontrar páginas maestras ( Si está anidando, este paso es, de lo contrario, innecesario) y luego devuelva ese control web como el tipo de página maestra que desea usar. Luego, cuando agrega un nuevo control de usuario, cambie su clase base por el nombre de su clase personalizada. La propiedad .Master será accesible y se lanzará correctamente como la página maestra que desea que use.


Prueba Page.Master .

Whatever whatev = (Whatever)Page.Master;

Deberá asegurarse de agregar las instrucciones de using adecuadas al principio de su archivo o calificar el tipo de página principal en línea.

Un posible error es si este control es utilizado por una página diferente cuya página maestra NO es del mismo tipo. Esto solo quedaría atrapado en el tiempo de ejecución.