Tengo algunas páginas en mi sitio web asp.net que me gustaría desactivar un control en la página maestra. ¿Hay alguna manera de comunicarse con la página maestra desde una página secundaria?Cómo controlar elementos en una página maestra de asp.net desde la página secundaria
Respuesta
La manera más fácil es configurar una propiedad en su página maestra que maneja la función de encendido/apagado cuando es llamado. Luego, en la página de su hijo configure el MasterType directive para obtener una referencia fuertemente tipada a su página maestra para evitar la necesidad de lanzar.
Su página niño tendría:
<%@ MasterType VirtualPath="~/Site1.Master" %>
Y para llamar a la propiedad de la página maestra:
Master.MyLabel = false; // or true
Así que en su maestro que podría tener:
public bool MyLabel
{
get
{
return masterLabel.Enabled;
}
set
{
masterLabel.Enabled = value;
}
}
Aquí hay un ejemplo de cómo comunicarse con las páginas maestras de las páginas secundarias.
En la página principal, crear una propiedad para el control al que desea acceder, por ejemplo una etiqueta llamada lblUser ...
public string MyProperty
{
set { lblUser.Text = value; }
}
En la página niño, acceso a la propiedad que acaba de crear, como en el siguiente ejemplo ...
((MyMaster)this.Master).MyProperty = "Text changed from Sub Page";
somos capaces de hacer esto porque el Maestro no es más que una clase que hereda System.Web.UI.MasterPage.
Y la propiedad Label.Text que creamos es solo una propiedad de la clase Master (este nombre será el nombre específico de su página maestra actual, en este caso MyMaster).
Observe que no funcionará sin un molde para su clase de página maestra específica y esto se debe a que ha agregado un campo que no existe en System.Web.UI.MasterPage, el tipo de este.Máster, pero en su Clase maestra específica.
+1 a esto! Igual que mi solución, ¡solo que más elegante! – GenericTypeTea
Simple y útil. Gracias y merecido un punto. – QMaster
this.Master.FindControl("controlid").dosomethinghere
-1 nombres de control de codificación rígida como cadenas es MALO – GenericTypeTea
@GenericTypeTea Eso es lo que hacen en la [documentación] (https://msdn.microsoft.com/en-us/library/xxwa0ff0 (v = vs.140) .aspx) aunque – Zorgarath
Es necesario utilizar una directiva MasterType en su página de marcado
<%@ MasterType TypeName="Namespace.Etc.MyMasterPage" %>
Entonces usted será capaz de acceder a los bienes de dominio público de la página principal de la página utilizando
this.Master.PropertyIWantToIntefereWith...
Esperanza esta ayuda
he estado haciendo eso a través del lanzamiento del objeto de página ... ¡esto suena mucho mejor! ¡Gracias! – CodeRedick
No estaba claro para mí dónde determinar el valor de TypeName, así que usé la opción VirtualPath para el MasterType y funcionó muy bien. ¡Gracias! – Lloyd
¡Nunca hay algo nuevo! Gracias Mark +1! – GenericTypeTea
I estaba buscando algo similar, pero esta solución no parece funcionar para mí. Tengo una página maestra anidada. ¿Funciona esto para un maestro anidado? Cuando lo implementé, no reconoce el control que agregué a mi maestro.
- 1. Cómo llamar a la función javascript de la página secundaria desde la página maestra javascript
- 2. Acceso a las variables de la página maestra en la página secundaria en asp.net
- 3. ASP.NET - Acceso a los elementos de la página maestra desde la página de contenido
- 4. ¿Cómo determinar qué página secundaria se muestra desde la página maestra?
- 5. ASP.NET Página maestra DefaultButton anular
- 6. ¿Botón predeterminado en asp.net (página maestra)?
- 7. Método de llamada en la página maestra
- 8. Acceso a User.Identity desde la página maestra
- 9. use la página maestra de formulario web como página maestra para ASP.Net MVC vistas programáticamente
- 10. ¿Cómo acceder al elemento .Net en la página maestra desde una página de contenido?
- 11. ¿Cómo implementar una página maestra y secundaria como Actividad en Android?
- 12. ¿Cómo acceder a un control de usuario en una página maestra desde una página de contenido?
- 13. Cómo establecer el título de la página desde una página de contenido web en ASP.NET 3.5
- 14. jQuery no se carga en la página maestra cuando la página de contenido está en una carpeta secundaria
- 15. Encontrar un control en una página con una página maestra
- 16. ¿Cómo asignar una página maestra a una página .aspx existente?
- 17. Equivalente de PHP de la página maestra en ASP.NET
- 18. ASP.net acceder a una variable página maestra a través de la página de contenido
- 19. Cómo llamar a la función de página de contenido desde la página maestra
- 20. Cambio dinámico de ASP.NET de la página maestra
- 21. Pasar datos a la página maestra en ASP.NET MVC
- 22. Cómo mostrar la propiedad de la página maestra en una página en Umbraco
- 23. ¿Cómo configurar la página maestra dinámicamente?
- 24. elemento de menú activo - asp.net mvc3 página maestra
- 25. Devolver objeto JSON desde una página ASP.NET
- 26. Acceso a las propiedades de la página maestra desde las páginas secundarias en ASP.net VB
- 27. ASP.Net Página maestra y problemas de ruta de archivos
- 28. ASP.NET MVC: diferentes modelos para página maestra y página de vista
- 29. Acceder al método público de la página maestra desde el control de usuario/clase/página
- 30. Web Forms de ASP.NET: archivo de página maestra y CSS
Marks anser me puso en marcha, pero esta es la respuesta de cómo pude implementarlo. Gracias Ahmad. – Lloyd
Bueno. Una cosa que puede hacer es ir a su archivo .designer.cs y cambiar el alcance del control a público, luego tiene todas las propiedades para entregar su lógica de página. Además, si está exponiendo una propiedad pública, generalmente es mejor utilizar CamelCase, pascalCase es para campos privados. :) –
@Mark: ¡buena información! Estoy de acuerdo con el CamelCase, me lo perdí. Corregido ahora. –