Использование SiteMapPath для создания динамического заголовка страницы? - PullRequest
0 голосов
/ 18 февраля 2011

В настоящее время я использую SiteMapPath для создания хлебных крошек для своих страниц ASP.net 3.5 (vb.net), и это прекрасно работает.

Теперь я пытаюсь выяснить, как я могу использовать то же самоеконтроль для построения динамического заголовка страницы (в теге).Мне нужен обратный путь в списке, но элемент управления SiteMapPath содержит ссылки и набор стилей.Есть ли способ удалить все это и просто получить простой путь с разделителями?

Например, допустим, мы находимся на странице «Пресс-релизы» внутри раздела «О нас» на моем сайте.

Хлебные крошки отображаются как:

На главную> О нас> Пресс-релизы

Я хочу, чтобы заголовок страницы был:

Пресс-релизы - О нас -Название компании

Так что мне нужно, чтобы он изменил порядок, удалил все промежутки, ссылки и стили (так как это внутри тега) и отбросил корневой узел «Домой», а затем добавил название компании в конец.Поскольку навигация по меню и хлебные палитры все ведутся из файла карты сайта, я подумал, что имеет смысл попытаться заставить заголовок сделать то же самое.

Есть мысли?Спасибо.

1 Ответ

1 голос
/ 18 февраля 2011

Лучший способ добиться желаемого результата - игнорировать элемент управления SitePath и вместо этого использовать коллекцию SiteMapNode в SiteMap. Сервер анализирует файл web.sitemap в коллекцию SiteMapNodes и подключает SiteMap.CurrentNode, находя узел, соответствующий URL-адресу текущей страницы. Каждый SiteMapNode имеет свойство ParentNode. Вот справочная страница на MSDN .

Итак, все, что вам нужно сделать, это проверить, есть ли у CurrentNode родительский элемент, если он добавляет заголовок ParentNode к заголовку CurrentNode и продолжает работать, пока не достигнете RootNode (где вы подставляете название своей компании для корневого узла). название).

Ниже приведено быстрое решение; это может войти в MasterPage, если вы используете один. Я не уверен, что ваш язык, но это должно быть легко переписать в VB.Net. Я дал ему простой тест, и он, казалось, сработал. Вы можете настроить символы, разделяющие заголовки страниц.

protected void Page_Load(object sender, EventArgs e)
{
    Page.Title = SiteMapTitle(SiteMap.CurrentNode, "", " - ");
}

private string GetNodeTitle(SiteMapNode oNode)
{
    if (oNode == SiteMap.RootNode)
        return "Company Name";
    else
        return oNode.Title;
}

private string SiteMapTitle(SiteMapNode oNode, string szTitle, string szItemSeparator)
{
    if (szTitle != string.Empty)
        szTitle = szTitle + szItemSeparator + GetNodeTitle(oNode);
    else
        szTitle = GetNodeTitle(oNode);

    if (oNode.ParentNode != null)
        szTitle = SiteMapTitle(oNode.ParentNode, szTitle, szItemSeparator);

    return szTitle;
}

Надеюсь, это поможет ...

...