动态修改SiteMap节点的问题
sans 2006-12-29 10:52:27 在网络上面找了一遭,结果基本上都是下面的代码,试了试,不行,而且我还没有看明白这段代码的意思,据说是MSDN上面的,本想验证一下,可惜硬盘上面的MSDN坏了,在线的MSDN又进不去,大概是受台湾地震的影响吧。
谁能够提供一个能够使用的代码来看看?
首先在Page_Load中添加SiteMapResolve事件:
protected void Page_Load(object sender, EventArgs e)
{
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(this.ExpandForumPaths);
}
然后在事件处理函数中这样做:
private SiteMapNode ExpandForumPaths(Object sender, SiteMapResolveEventArgs e)
{
SiteMapNode currentNode = SiteMap.CurrentNode.Clone();
SiteMapNode tempNode = currentNode;
// Obtain the recent IDs.
int forumGroupID = GetMostRecentForumGroupID();
int forumID = GetMostRecentForumID(forumGroupID);
int postID = GetMostRecentPostID(forumID);
if(0 != postID)
{
tempNode.Url = tempNode.Url + "?BID=" + postID.ToString();
}
if((null != (tempNode = tempNode.ParentNode)) && (0 != forumID))
{
tempNode.Url = tempNode.Url + "?TOPIC_ID=" + forumID.ToString();
}
if ((null != (tempNode = tempNode.ParentNode)) &&(0 != forumGroupID))
{
tempNode.Url = tempNode.Url + "?ForumGroupID=" + forumGroupID.ToString();
}
return currentNode;
}
在实际使用时,SiteMapNode currentNode = SiteMap.CurrentNode.Clone();这一句出错,大意是CurrentNode是空值。
另外,currentNode又没有使用过,返回它有用吗?