SiteMapResolveEventArgs Class
Collapse the table of content
Expand the table of content

SiteMapResolveEventArgs Class


Provides data for an event that is raised by calling the CurrentNode property of the SiteMapProvider class.

Namespace:   System.Web
Assembly:  System.Web (in System.Web.dll)


public class SiteMapResolveEventArgs : EventArgs

System_CAPS_pubmethodSiteMapResolveEventArgs(HttpContext, SiteMapProvider)

Initializes a new instance of the SiteMapResolveEventArgs class using the specified HttpContext and SiteMapProvider objects.


Gets the context of the page request that the requested node represents.


Gets the SiteMapProvider object that raised the SiteMapResolve event.


Determines whether the specified object is equal to the current object.(Inherited from Object.)


Allows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection.(Inherited from Object.)


Serves as the default hash function. (Inherited from Object.)


Gets the Type of the current instance.(Inherited from Object.)


Creates a shallow copy of the current Object.(Inherited from Object.)


Returns a string that represents the current object.(Inherited from Object.)

The SiteMapResolveEventArgs class is used in the ResolveSiteMapNode method to enable subscribers to the SiteMapResolve event to return an instance of the SiteMapNode class. By adding an event handler delegate to handle the SiteMapResolve event, you can create a SiteMapNode representation of a page without implementing a custom site map provider.

The following code example demonstrates how to handle the SiteMapResolve event on an ASP.NET Web page to modify the target URLs that are displayed by a site navigation control, such as the SiteMapPath control. In this example, the current page is a post page in an online bulletin board or forum. To render more meaningful site navigation, the URLs of the nodes displayed by the navigation control are appended with query strings that are relevant to the context.

Note   It is safe to access the CurrentNode property from within the SiteMapResolveEventHandler class. The ASP.NET site navigation infrastructure guards against infinite recursion, in this case.

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;

.NET Framework
Available since 2.0

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.

Return to top
© 2015 Microsoft