Навыки одноточечной обработки заголовков веб-страниц.
Недавно, используя sitemappath компонента навигации по страницам, предоставленный ms в .net2.0, я подумал о простом и удобном механизме решения проблемы рассинхронизации заголовков страниц, которым я хотел бы поделиться. это со всеми.
Текущие проблемы:
1. Обычно на всем веб-сайте нет единого места хранения заголовков страниц aspx. Для каждой страницы заголовок страницы либо жестко запрограммирован непосредственно в файле aspx страницы, либо динамически записывается через aspx.cs (дополнительные заголовки). также добавлены в 1.1 Control, свойство Page.Title можно использовать в 2.0), и если на всем сайте много веб-страниц, то этот повторяющийся логический код придется писать много раз, что крайне некрасиво и не может быть синхронизированы в других местах, где используется информация о заголовке.
2. Даже если все заголовки страниц поместить в файлы ресурсов (или xml) для поддержки многоязычной поддержки, возникнет проблема с загрузкой заголовков через программный код Tongyi, то есть мест, где заголовки страниц используются в Страница может не только в области заголовка, такой как (элемент управления навигацией по странице), то, как позволить этим элементам управления также получать информацию о заголовке из этих файлов ресурсов (или XML), также является головной болью.
Чего достичь:
1. Решите все проблемы с заголовками веб-страниц сразу в основном шаблоне всего веб-сайта. Заголовки, используемые на всех веб-сайтах, сохраняются в Web.sitemap (могут поддерживать несколько языков), так что навигационная информация страницы также может быть сохранена. одновременно. .
2. Автоматически добавлять имя сайта после каждого заголовка веб-сайта в заголовке всплывающей формы, например (Вход пользователя | Программное обеспечение Qisi), но при ссылке на заголовок в элементе управления навигацией по странице имя сайта не будет отображаться, например как (Главная страница>Центр участников>Вход пользователя).
3. Если в программе aspx.cs указан атрибут page.Title, не может быть имени сайта. Например, отображается строка заголовка страницы (Вход пользователя | Программное обеспечение Qisi), но в обычном режиме указывается значение page.Title. программа страницы (Вход пользователя).
Конкретный метод реализации заключается в следующем:
Добавьте следующий код на главную страницу веб-сайта:
protected void Page_Load (отправитель объекта, EventArgs e)
{
если (!this.IsPostBack)
{
this.searchDescription.Content = this.SearchDescription;
this.searchKeywords.Content = this.SearchKeywords;
}
если (SiteMap.CurrentNode! = ноль)
{
this.Page.Title = SiteMap.CurrentNode.Title;
}
еще
{
this.Page.Title = "Навигация по этой странице не настроена в Web.sitemap";
}
}
защищенное переопределение void Render (писатель HtmlTextWriter)
{
this.Page.Title = this.Page.Title + " | " + Keyss.WebFramework.ConfigManager.GetInstance().SiteName;
base.Render(писатель);
}
объяснять:
1. Причина, по которой оценка страницы не реализована в блоке (!this.IsPostBack){}, заключается в том, что состояние просмотра не может быть сохранено в page.Title. Я думаю, что это небольшая ошибка в .net2.0.
2. Причина, по которой атрибут title перезаписывается в методе рендеринга, заключается в том, что метод рендеринга не сохраняет состояние просмотра в течение всего жизненного цикла страницы и страницы. Содержимое заголовка, записанное со страницы, допустимо только на главной странице, поскольку главная страница отвечает за рендеринг заголовка страницы. В методе рендеринга страницы заголовок был отображен. Изменение заголовка не повлияет на результат рендеринга.
Источник: БЛОГ Qisi Software.