asp.net: update/change SiteMapNode’s URL

Programmatically Modify Site-Map Nodes in Memory  (asp.net:  update/change SiteMapNode’s URL)

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;
    }


...    // These methods are just placeholders for the example.
// One option is to use the HttpContext or e.Content object
// to obtain the ID.
private int GetMostRecentForumGroupID()
    {
     return 24;
    }


private int GetMostRecentForumID(int forumGroupId)
    {
     return 128;
    }


private int GetMostRecentPostID(int forumId)
    {
     return 317424;
    }

http://msdn.microsoft.com/en-us/library/ms178425.aspx

http://quickstarts.asp.net/QuickStartv20/aspnet/doc/navigation/sitenavapi.aspx

http://www.eggheadcafe.com/community/aspnet/7/10014616/programmatically-modify-s.aspx

http://www.eggheadcafe.com/community/aspnet/7/10014602/how-do-you-update-a-sitem.aspx

http://dotnetslackers.com/VB_NET/re-113165_Adding_QueryString_Parameters_to_the_SiteMapNode.aspx

原文地址:https://www.cnblogs.com/emanlee/p/1524313.html