Compétences de traitement en un seul point pour les titres de pages Web.
Récemment, en utilisant le composant de navigation de page sitemappath fourni par ms dans .net2.0, j'ai pensé à un mécanisme simple et pratique pour résoudre le problème de désynchronisation des titres de page. avec tout le monde.
Problèmes actuels :
1. Il n'existe généralement pas d'emplacement de stockage unifié pour les titres de page aspx sur l'ensemble du site Web. Pour chaque page, le titre de la page est soit codé en dur directement dans le fichier aspx de la page, soit écrit dynamiquement via aspx.cs (titres supplémentaires). sont également ajoutés dans 1.1 Control, la propriété Page.Title peut être utilisée dans 2.0), et si l'ensemble du site comporte de nombreuses pages Web, ce code logique répétitif devra être écrit plusieurs fois, ce qui est extrêmement inesthétique et ne peut pas être synchronisés à d’autres endroits où les informations sur le titre sont utilisées.
2. Même si tous les titres de page sont placés dans des fichiers de ressources (ou XML) afin de prendre en charge la prise en charge multilingue, il y aura un problème lors du chargement des titres via le code du programme Tongyi, c'est-à-dire les endroits où les titres de page sont utilisés dans le La page peut non seulement dans la zone de titre telle que (contrôle de navigation de page), comment permettre à ces contrôles d'obtenir également les informations de titre à partir de ces fichiers de ressources (ou XML) est également un casse-tête.
Que réaliser :
1. Résolvez tous les problèmes liés aux titres de pages Web en même temps dans le modèle principal de l'ensemble du site Web. Les titres utilisés dans tous les sites Web sont conservés dans Web.sitemap (peut prendre en charge plusieurs langues), de sorte que les informations de navigation de la page puissent également être conservées. simultanément. .
2. Ajoutez automatiquement le nom du site après chaque titre de site Web dans le titre du formulaire contextuel, tel que (Connexion utilisateur | Logiciel Qisi), mais lors de la référence au titre dans le contrôle de navigation de la page, le nom du site n'apparaîtra pas, tel que comme (Accueil>Centre des membres>Connexion utilisateur).
3. Lorsque l'attribut page.Title est référencé dans le programme aspx.cs, il ne peut pas y avoir de nom de site. Par exemple, la barre de titre de la page s'affiche (Connexion utilisateur | Logiciel Qisi), mais la valeur page.Title référencée dans la normale. Le programme de la page est (Connexion utilisateur).
La méthode spécifique de mise en œuvre est la suivante :
Ajoutez le code suivant à la page maître du site Web :
protected void Page_Load (expéditeur de l'objet, EventArgs e)
{
si (!this.IsPostBack)
{
this.searchDescription.Content = this.SearchDescription;
this.searchKeywords.Content = this.SearchKeywords;
}
si (SiteMap.CurrentNode != null)
{
this.Page.Title = SiteMap.CurrentNode.Title;
}
autre
{
this.Page.Title = "La navigation dans cette page n'a pas été configurée dans Web.sitemap";
}
}
remplacement protégé void Render (écrivain HtmlTextWriter)
{
this.Page.Title = this.Page.Title + " | " + Keyss.WebFramework.ConfigManager.GetInstance().SiteName;
base.Render(écrivain);
}
expliquer:
1. La raison pour laquelle le jugement de page n'est pas implémenté dans le bloc (!this.IsPostBack){} est que l'état d'affichage ne peut pas être enregistré dans page.Title. Je pense qu'il s'agit d'un petit bug dans .net2.0.
2. La raison pour laquelle l'attribut title est réécrit dans la méthode de rendu est que la méthode de rendu ne sauvegarde pas l'état d'affichage pendant la durée de vie de la page et que la page. Le contenu du titre écrit à partir de la page n'est valide que dans la page maître car la page maître est responsable du rendu du titre de la page. Dans la méthode de rendu de la page, le titre a été rendu. La modification du titre n'affectera pas le résultat du rendu.
Source : BLOG du logiciel Qisi