2010-05-24 8 views
6

Hemos creado una página maestra que hereda de la clase principal asp.net. También tenemos controles ui que heredan de la clase de control asp.net ui estándar. Nuestra página maestra tiene una variable de miembro público. Necesitamos poder acceder a esa variable miembro desde los controles de la interfaz de usuario que usamos. Sin embargo, parece que no podemos lograrlo? ¿Es nuestra arquitectura lo que está mal? O la idea en sí misma: ¿el control del usuario tiene acceso a las variables de la página maestra?Obtener acceso a una página maestra personalizada desde un control de usuario

Respuesta

6

En términos generales, esto probablemente no es un buen patrón de diseño. Sin embargo, debería poder hacer algo como esto:

MyMasterType myMaster = this.Page.Master as MyMasterType; 
if (myMaster != null) 
{ 
    myMaster.PublicProperty = value; 
} 
+0

Yeh esto es lo que estamos yendo actualmente, pero simplemente se siente mal. Así que vamos a cambiar el control para tener una propiedad pública. La página contenedora inyectará el valor en esa propiedad al cargar. – Bernard

+0

¿Hay alguna razón por la que inyectar el valor es mejor que tomarlo del control del usuario? Ya estaba inyectando y estaba buscando una manera de agarrarlo en su lugar, pero con mucho gusto reconsideraría si había una buena razón para hacerlo. –

+0

Hay un par de razones: 1) El uso de una propiedad en la página maestra le permite establecer el valor en otros contextos (necesidades futuras) y 2) La arquitectura ya no está estrechamente acoplada. Si la página maestra toma los datos, la página maestra depende de que el control del usuario esté allí. – etc

Cuestiones relacionadas