Escribo código en la página maestra y necesito saber qué página secundaria (de contenido) se está mostrando. ¿Cómo puedo hacer esto programáticamente?¿Cómo determinar qué página secundaria se muestra desde la página maestra?
Respuesta
Esto suena como una mala idea para empezar. La idea del maestro es que no debería importar qué página hay, ya que este es el código común para cada página.
que puede utilizar:
Esto hizo el trabajo en mi caso ya que estaba pidiendo el nombre de archivo preciso, no el objeto. – gkakas
Page.Request.Url.PathAndQuery o una de las otras propiedades del objeto URI URL deben estar disponibles para usted desde el código de la página principal.
Hago algo similar a esto en un proyecto mío para adjuntar dinámicamente archivos CSS basados en la página que se está cargando. Acabo de obtener el nombre del archivo de la solicitud:
this.Request.Url.AbsolutePath
Y luego extraer el nombre del archivo de allí. No estoy seguro de si esto funcionará si usted está haciendo reescrituras URL sin embargo.
puede comprobar el tipo de página en el código subyacente:
// Assuming MyPage1, MyPage2, and MyPage3 are the class names in your aspx.cs files:
if (this.Page is MyPage1)
{
// do MyPage1 specific stuff
}
else if (this.Page is MyPage2)
{
// do MyPage2 specific stuff
}
else if (this.Page is MyPage3)
{
// do MyPage3 specific stuff
}
Esto es lo que esperaría también, pero esto no funciona. ÁSPID.NET parece destruir las declaraciones de clase (molestamente!) Así que mientras parece que declaras 'MyPage1', en realidad no lo eres. Obtiene algo como 'ASP.MyPage1_aspx', y no puede hacer referencia a este tipo en tiempo de compilación. –
Es mejor dejar que el ContentPage
notificar al MasterPage
. Es por eso que el ContentPage
tiene una propiedad Master
y MasterPage
no tiene la propiedad Child
. La mejor práctica en esto es definir una propiedad o método en el MasterPage
y usar esto a través de la propiedad Master
del ContentPage
.
Si utiliza esta técnica, es mejor especificar explícitamente el nombre de clase para la página maestra. Esto hace que se use la página maestra en la página de contenido.
Ejemplo:
//Page_Load
MyMaster m = (MyMaster)this.Master;
m.TellMasterWhoIAm(this);
Espero que esto ayude.
Me gusta esto. A veces, la página maestra * necesita * necesita un poco de información de sus usuarios. Esta es una forma limpia de hacerlo. –
Esta es una buena solución a la pregunta. Lo que el cartel original preguntaba cómo hacer no era realmente una buena práctica a seguir, y ofreciste una solución que dirigía al OP a seguir una mejor práctica. Gracias @norbertB! –
Yo uso este:
string pageName = this.ContentPlaceHolder1.Page.GetType().FullName;
Se Retuns el nombre de la clase en este formato "ASP.default_aspx", pero me parece que puede analizar fácilmente para la mayoría de los propósitos.
Espero que ayude!
Puede usar 'string pageName = this.ContentPlaceHolder1.Page.GetType(). BaseType.Name;' Esto devuelve el tipo de clase base de la página secundaria. Para la mayoría de los casos, proporciona la dirección de página sin la etiqueta "aspx". Por ejemplo, "Predeterminado". –
He tenido un motivo para verificar la página secundaria en la página maestra.
Tengo todas las opciones de menú en mi página maestra y deben deshabilitarse si ciertas configuraciones del sistema no están configuradas.
Si no lo están, se muestra un mensaje y los botones están deshabilitados. Como la página de configuración es una página de contenido de esta página maestra, no quiero que el mensaje siga apareciendo en todas las páginas de configuración.
este código trabajó para mí:
//Only show the message if on the dashboard (first page after login)
if (this.ContentPlaceHolder1.Page is Dashboard)
{
//Show modal message box
mmb.Show("Warning Message");
}
Estoy usando VB y esto funciona para mí: si ContentPlaceHolder1.Page.GetType(). BaseType es GetType (Dashboard) –
Usted puede hacer esto consiguiendo el último segmant o la solicitud y voy a ser el nombre del formulario
string pageName = this.Request.Url.Segments.Last();
if (pageName.Contains("EmployeeTermination.aspx"))
{
}
usar el siguiente código.
Page.ToString().Replace("ASP.","").Replace("_",".")
Muchas gracias. funcionó Es decir, podemos llegar a cualquier página desde la página maestra ... –
esta fue mi solución, necesitaba el nombre de la página de contenido para evaluar una función que debería o no mostrar una etiqueta – Bachask8
Usted puede probar esto:
<%: this.ContentPlaceHolder1.Page.GetType().Name.Split('_')[0].ToUpper() %>
Ponga ese código dentro de las etiquetas de la title
Site.Master
Request.CurrentExecutionFilePath;
o
Request.AppRelativeCurrentExecutionFilePath;
string s = Page.ToString().Replace("ASP.directory_name_","").Replace("_aspx",".aspx").Replace("_","-");
if (s == "default.aspx")
{ /* do something */ }
Aquí está mi solución al problema (el código entra en el código detrás de la página maestra):
if (Page.TemplateControl.AppRelativeVirtualPath == "~/YourPageName.aspx")
{
// your code here
}
o un poco más sofisticado, pero menos legible:
if (Page.TemplateControl.AppRelativeVirtualPath.Equals("~/YourPageName.aspx", StringComparison.OrdinalIgnoreCase))
{
// your code here
}
por lo muchas respuestas Estoy utilizando
<%if(this.MainContent.Page.Title != "mypagetitle") { %>
<%}%>
Esto hace que sea fácil de excluir una sola página y desde su comparación una cadena incluso podría prefijar páginas como exclude_pagetitle y comparar una subcadena del título. Lo uso comúnmente para excluir las páginas de inicio de sesión de ciertas funciones que no quiero cargar, como los tiempos de espera de la sesión y el chat en vivo.
A continuación código funcionó como un ..try encantada que
cadena Pname = Request.UrlReferrer.Segments [Request.UrlReferrer.Segments.Length - 1];
- 1. Cómo llamar a la función javascript de la página secundaria desde la página maestra javascript
- 2. Cómo controlar elementos en una página maestra de asp.net desde la página secundaria
- 3. Acceso a User.Identity desde la página maestra
- 4. ¿Sabe una página maestra qué página se está mostrando?
- 5. Acceso a las variables de la página maestra en la página secundaria en asp.net
- 6. jQuery no se carga en la página maestra cuando la página de contenido está en una carpeta secundaria
- 7. ¿Cómo acceder al elemento .Net en la página maestra desde una página de contenido?
- 8. Cómo llamar a la función de página de contenido desde la página maestra
- 9. ¿Cómo configurar la página maestra dinámicamente?
- 10. ASP.NET - Acceso a los elementos de la página maestra desde la página de contenido
- 11. Método de llamada en la página maestra
- 12. ¿Cómo acceder a un control de usuario en una página maestra desde una página de contenido?
- 13. ¿Cómo asignar una página maestra a una página .aspx existente?
- 14. Acceder al método público de la página maestra desde el control de usuario/clase/página
- 15. use la página maestra de formulario web como página maestra para ASP.Net MVC vistas programáticamente
- 16. ASP.NET Página maestra DefaultButton anular
- 17. CSS e imágenes en la página maestra
- 18. ¿Cómo implementar una página maestra y secundaria como Actividad en Android?
- 19. Encontrar un control en una página con una página maestra
- 20. ¿Cómo se muestra la página de mantenimiento durante la implementación?
- 21. Acceso a las principales propiedades de la página maestra en un código de página maestra anidado detrás de
- 22. Cómo mostrar la propiedad de la página maestra en una página en Umbraco
- 23. valor de la etiqueta de la página maestra no actualizada página de contenido de la forma
- 24. PreRender en ASP.NET Página maestra que no se activa
- 25. Página maestra y formulario anidado número
- 26. cómo sacar el ScriptManager de página maestra en el código de la página Niño detrás de C# (.cs) Archivo
- 27. La página no se muestra correctamente hasta que se actualice
- 28. ¿Botón predeterminado en asp.net (página maestra)?
- 29. Cambiar la página maestra del código detrás de
- 30. ¿Cómo manejar el evento de botón de página maestra en la página de contenido?
+1 Exactamente. Esto va mucho en contra de lo que es una página maestra. – NotMe
Esta es una buena regla general, pero ¿qué tal algo así como un rastro de pan? Lo quiere en cada página, pero necesita saber qué página específica está cargada para determinar las migas. Para esto expongo típicamente una función pública en la página maestra para establecer la miga final, esto es llamado por la página. Las otras migas están determinadas por el mapa del sitio. – spilliton
¿Cuál sería su recomendación si su página maestra contuviera lógica para redirigir a una página 'segura' bajo ciertas circunstancias A MENOS QUE se visualizara la página segura? –