Habilidades de procesamiento de un solo punto para títulos de páginas web
Recientemente, cuando utilicé el componente de navegación de páginas sitemappath proporcionado por ms en .net2.0, pensé en un mecanismo simple y conveniente para resolver el problema de la desincronización de títulos de páginas. eso con todos.
Problemas actuales:
1. Por lo general, no existe una ubicación de almacenamiento unificada para los títulos de las páginas aspx en todo el sitio web. Para cada página, el título de la página está codificado directamente en el archivo aspx de la página o escrito dinámicamente a través de aspx.cs (títulos adicionales). También se agregan en 1.1 Control, la propiedad Page.Title se puede usar en 2.0), y si todo el sitio tiene muchas páginas web, este código lógico repetitivo deberá escribirse muchas veces, lo cual es extremadamente desagradable y no se puede sincronizado en otros lugares donde se utiliza la información del título.
2. Incluso si todos los títulos de las páginas se colocan en archivos de recursos (o xml) para admitir la compatibilidad con varios idiomas, habrá un problema al cargar títulos a través del código del programa Tongyi, es decir, los lugares donde se usan los títulos de las páginas en el Es posible que la página no solo esté en el área del título, como (control de navegación de la página), cómo permitir que estos controles también obtengan la información del título de estos archivos de recursos (o xml) también es un dolor de cabeza.
Qué lograr:
1. Resuelva todos los problemas con los títulos de las páginas web a la vez en la plantilla principal de todo el sitio web. Los títulos utilizados en todos los sitios web se mantienen en Web.sitemap (puede admitir varios idiomas), de modo que también se pueda mantener la información de navegación de la página. simultáneamente. .
2. Agregue automáticamente el nombre del sitio después de cada título del sitio web en el título del formulario emergente, como (Inicio de sesión de usuario | Software Qisi), pero al hacer referencia al título en el control de navegación de la página, el nombre del sitio no aparecerá, como como (Inicio>Centro de miembros>Inicio de sesión de usuario).
3. Cuando se hace referencia al atributo page.Title en el programa aspx.cs, no puede haber un nombre de sitio. Por ejemplo, se muestra la barra de título de la página (Inicio de sesión de usuario | Software Qisi), pero el valor page.Title al que se hace referencia es normal. El programa de la página es (Inicio de sesión de usuario).
El método de implementación específico es el siguiente:
Agregue el siguiente código a la página maestra del sitio web:
Page_Load vacío protegido (remitente del objeto, EventArgs e)
{
si (!this.IsPostBack)
{
this.searchDescription.Content = this.SearchDescription;
this.searchKeywords.Content = this.SearchKeywords;
}
si (SiteMap.CurrentNode! = nulo)
{
this.Page.Title = SiteMap.CurrentNode.Title;
}
demás
{
this.Page.Title = "La navegación de esta página no ha sido configurada en Web.sitemap";
}
}
Anulación protegida Renderizado vacío (escritor HtmlTextWriter)
{
this.Page.Title = this.Page.Title + " | " + Keyss.WebFramework.ConfigManager.GetInstance().SiteName;
base.Render(escritor);
}
explicar:
1. La razón por la que el juicio de página no se implementa en el bloque (!this.IsPostBack){} es porque el estado de la vista no se puede guardar en page.Title. Creo que se trata de un pequeño error en .net2.0.
2. La razón por la que el atributo de título se reescribe en el método de representación es porque el método de representación no guarda el estado de visualización durante la vida útil de la página y la página. El contenido del título escrito desde la página solo es válido en la página maestra porque la página maestra es responsable de la representación del título de la página. En el método de representación de la página, el título se ha representado. Cambiar el título no afectará el resultado de la representación.
Fuente: BLOG de Qisi Software