如何让SiteMapPath动态添加节点
sitemap是编辑好的,显示例如这样的:主页>页面1>板块1而我想在板块1后面动态添加节点。该怎么弄?就比如:主页>页面1>板块1>第一个新闻...
sitemap是编辑好的,显示例如这样的:主页 > 页面1 > 板块1 而我想在板块1后面动态添加节点。该怎么弄?就比如: 主页 > 页面1 > 板块1 > 第一个新闻
展开
1个回答
2013-05-24
展开全部
首先你要写好Web.sitemap,写好后你要修改SiteMapPath的前面前台(.aspx)只需要有个有SiteMapPath控件就可以了。关键就看后台(.cs)代码了:1、增加:protected void Page_Load(object sender, EventArgs e)
{
//在Page_Load中注册SiteMapResolve事件给SiteMap_SiteMapResolve方法以添加节点
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve);
}private SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
{
SiteMapNode currentNode = null; if (SiteMap.CurrentNode != null)
{
currentNode = SiteMap.CurrentNode.Clone(true); SiteMapNodeCollection childNodes = new SiteMapNodeCollection(); SiteMapNode newNode = new SiteMapNode(e.Provider, "newNode", "OthrePage.aspx", "新的节点");
newNode.ParentNode = currentNode;
childNodes.Add(newNode);
currentNode.ChildNodes = childNodes; currentNode = newNode;
}
return currentNode;
} 2、删除:protected void Page_Load(object sender, EventArgs e)
{
//在Page_Load中注册SiteMapResolve事件给SiteMap_SiteMapRemove方法以删除节点
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(this.SiteMap_SiteMapRemove);
}private SiteMapNode SiteMap_SiteMapRemove(object sender, SiteMapResolveEventArgs e)
{
SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true); if (currentNode.Key.EndsWith("PostEditor.aspx".ToLower()))
{
//currentNode 为"回复文章"的上一层"动态修改SiteMpaPath路径"
currentNode = currentNode.ParentNode;
currentNode.ChildNodes.Clear();
}
return currentNode;
}3、修改: protected void Page_Load(object sender, EventArgs e)
{
//在Page_Load中注册SiteMapResolve事件给ModifyPath方法以修改当前结点和父结点
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(this.ModifyPath);
}private SiteMapNode ModifyPath(object sender, SiteMapResolveEventArgs e)
{
SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
SiteMapNode modifyNode = currentNode;
modifyNode.Url = " http://www.bbb.net";
modifyNode.Title = "修改当前结点";
modifyNode.Description = "对当前结点的描述,鼠标提示信息";
if ( (modifyNode = modifyNode.ParentNode) != null)
{
modifyNode.Url = " http://www.aaa.net";
modifyNode.Title = "修改父结点";
}
return currentNode;
}这就大功告成了!添删改时会有一段时间才会看到效果,不知道为什么,还请高手指教。
{
//在Page_Load中注册SiteMapResolve事件给SiteMap_SiteMapResolve方法以添加节点
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(SiteMap_SiteMapResolve);
}private SiteMapNode SiteMap_SiteMapResolve(object sender, SiteMapResolveEventArgs e)
{
SiteMapNode currentNode = null; if (SiteMap.CurrentNode != null)
{
currentNode = SiteMap.CurrentNode.Clone(true); SiteMapNodeCollection childNodes = new SiteMapNodeCollection(); SiteMapNode newNode = new SiteMapNode(e.Provider, "newNode", "OthrePage.aspx", "新的节点");
newNode.ParentNode = currentNode;
childNodes.Add(newNode);
currentNode.ChildNodes = childNodes; currentNode = newNode;
}
return currentNode;
} 2、删除:protected void Page_Load(object sender, EventArgs e)
{
//在Page_Load中注册SiteMapResolve事件给SiteMap_SiteMapRemove方法以删除节点
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(this.SiteMap_SiteMapRemove);
}private SiteMapNode SiteMap_SiteMapRemove(object sender, SiteMapResolveEventArgs e)
{
SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true); if (currentNode.Key.EndsWith("PostEditor.aspx".ToLower()))
{
//currentNode 为"回复文章"的上一层"动态修改SiteMpaPath路径"
currentNode = currentNode.ParentNode;
currentNode.ChildNodes.Clear();
}
return currentNode;
}3、修改: protected void Page_Load(object sender, EventArgs e)
{
//在Page_Load中注册SiteMapResolve事件给ModifyPath方法以修改当前结点和父结点
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(this.ModifyPath);
}private SiteMapNode ModifyPath(object sender, SiteMapResolveEventArgs e)
{
SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true);
SiteMapNode modifyNode = currentNode;
modifyNode.Url = " http://www.bbb.net";
modifyNode.Title = "修改当前结点";
modifyNode.Description = "对当前结点的描述,鼠标提示信息";
if ( (modifyNode = modifyNode.ParentNode) != null)
{
modifyNode.Url = " http://www.aaa.net";
modifyNode.Title = "修改父结点";
}
return currentNode;
}这就大功告成了!添删改时会有一段时间才会看到效果,不知道为什么,还请高手指教。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询