Habilidades de processamento de ponto único para títulos de páginas da web
Recentemente, ao usar o componente de navegação de página sitemappath fornecido por ms em .net2.0, pensei em um mecanismo simples e conveniente para resolver o problema de dessincronização de títulos de páginas. isso com todo mundo.
Problemas atuais:
1. Geralmente não há local de armazenamento unificado para títulos de páginas aspx em todo o site. Para cada página, o título da página é codificado diretamente no arquivo aspx da página ou gravado dinamicamente por meio de aspx.cs (títulos adicionais). também são adicionados no controle 1.1, a propriedade Page.Title pode ser usada no 2.0), e se todo o site tiver muitas páginas da web, esse código lógico repetitivo terá que ser escrito muitas vezes, o que é extremamente feio e não pode ser sincronizado em outros locais onde as informações do título são usadas.
2. Mesmo que todos os títulos das páginas sejam colocados em arquivos de recursos (ou xml) para oferecer suporte a vários idiomas, haverá um problema no carregamento dos títulos por meio do código do programa Tongyi, ou seja, os locais onde os títulos das páginas são usados no página pode não apenas na área de título, como (controle de navegação de página), como permitir que esses controles também obtenham informações de título desses arquivos de recursos (ou xml) também é uma dor de cabeça.
O que alcançar:
1. Resolva todos os problemas com títulos de páginas web de uma só vez no template principal de todo o site. Os títulos utilizados em todos os sites são mantidos em Web.sitemap (pode suportar vários idiomas), para que as informações de navegação da página também possam ser mantidas. simultaneamente.
2. Adicione automaticamente o nome do site após cada título do site no título do formulário pop-up, como (Login do usuário | Software Qisi), mas ao referenciar o título no controle de navegação da página, o nome do site não aparecerá, tal como (Página inicial>Centro de membros>Login do usuário).
3. Quando o atributo page.Title é referenciado no programa aspx.cs, não pode haver um nome de site. Por exemplo, a barra de título da página é exibida (Login do usuário | Software Qisi), mas o valor page.Title referenciado no normal. programa da página é (Login do usuário).
O método de implementação específico é o seguinte:
Adicione o seguinte código à masterpage do site:
protegido void Page_Load (remetente do objeto, EventArgs e)
{
if (!this.IsPostBack)
{
this.searchDescription.Content = this.SearchDescription;
this.searchKeywords.Content = this.SearchKeywords;
}
if (SiteMap.CurrentNode! = Nulo)
{
this.Page.Title = SiteMap.CurrentNode.Title;
}
outro
{
this.Page.Title = "Esta navegação de página não foi configurada no Web.sitemap";
}
}
substituição protegida void Render (gravador HtmlTextWriter)
{
this.Page.Title = this.Page.Title + " | " + Keyss.WebFramework.ConfigManager.GetInstance().SiteName;
base.Render(escritor);
}
explicar:
1. O motivo pelo qual o julgamento da página não é implementado no bloco (!this.IsPostBack){} é porque o estado de visualização não pode ser salvo em page.Title. Acho que este é um pequeno bug no .net2.0.
2. A razão pela qual o atributo title é reescrito no método render é porque o método render não salva o viewstate durante o tempo de vida da página, e o conteúdo page.Title escrito a partir da página só é válido na masterpage porque a masterpage é responsável pela renderização do título da página. No método de renderização da página, o título foi renderizado.
Fonte: Qisi Software BLOG