Прочитать на английском

Поделиться через


SiteMapResolveEventHandler Делегат

Определение

Представляет метод, который обрабатывает событие SiteMapResolve определенного экземпляра SiteMapProvider или статического класса SiteMap.

C#
public delegate System.Web.SiteMapNode SiteMapResolveEventHandler(object sender, SiteMapResolveEventArgs e);

Параметры

sender
Object

Источник события, экземпляр класса SiteMapProvider.

e
SiteMapResolveEventArgs

Объект SiteMapResolveEventArgs, содержащий данные события.

Возвращаемое значение

SiteMapNode, который представляет результат выполнения операции SiteMapResolveEventHandler.

Примеры

В следующем примере кода показано, как обрабатывать SiteMapResolve событие на веб-странице ASP.NET для изменения целевых URL-адресов, отображаемых элементом управления навигацией сайта, например элементом SiteMapPath управления . В этом примере текущая страница — это страница публикации на онлайн-доске объявлений или на форуме. Чтобы отобразить более осмысленную навигацию по сайту, к URL-адресам узлов, отображаемых элементом управления навигацией, добавляются строки запросов, относящиеся к контексту.

Примечание

Доступ к свойству CurrentNode можно получить из SiteMapResolveEventHandler класса . В данном случае инфраструктура навигации сайта ASP.NET защищает от бесконечной рекурсии.

C#
private void Page_Load(object sender, EventArgs e)
{
    // The ExpandForumPaths method is called to handle
    // the SiteMapResolve event.
    SiteMap.SiteMapResolve +=
      new SiteMapResolveEventHandler(this.ExpandForumPaths);
}

private SiteMapNode ExpandForumPaths(Object sender, SiteMapResolveEventArgs e)
{
    // The current node represents a Post page in a bulletin board forum.
    // Clone the current node and all of its relevant parents. This
    // returns a site map node that a developer can then
    // walk, modifying each node.Url property in turn.
    // Since the cloned nodes are separate from the underlying
    // site navigation structure, the fixups that are made do not
    // effect the overall site navigation structure.
    SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
    SiteMapNode tempNode = currentNode;

    // Obtain the recent IDs.
    int forumGroupID = GetMostRecentForumGroupID();
    int forumID = GetMostRecentForumID(forumGroupID);
    int postID = GetMostRecentPostID(forumID);

    // The current node, and its parents, can be modified to include
    // dynamic querystring information relevant to the currently
    // executing request.
    if (0 != postID)
    {
        tempNode.Url = tempNode.Url + "?PostID=" + postID.ToString();
    }

    if ((null != (tempNode = tempNode.ParentNode)) &&
        (0 != forumID))
    {
        tempNode.Url = tempNode.Url + "?ForumID=" + forumID.ToString();
    }

    if ((null != (tempNode = tempNode.ParentNode)) &&
        (0 != forumGroupID))
    {
        tempNode.Url = tempNode.Url + "?ForumGroupID=" + forumGroupID.ToString();
    }

    return currentNode;
}

Комментарии

Статический SiteMap класс предоставляет SiteMapResolve событие поставщика карты сайта по умолчанию.

При создании делегата SqlDataSourceCommandEventHandler необходимо указать метод, обрабатывающий событие. Чтобы связать событие с обработчиком событий, нужно добавить в событие экземпляр делегата. Обработчик событий вызывается всякий раз, когда происходит событие, если делегат не удален. Дополнительные сведения о делегатах обработчика событий см. в разделе Обработка и вызов событий.

Методы расширения

GetMethodInfo(Delegate)

Получает объект, представляющий метод, представленный указанным делегатом.

Применяется к

Продукт Версии
.NET Framework 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8, 4.8.1

См. также раздел