日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

動態修改SiteMapPath路徑

發布時間:2024/7/19 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 動態修改SiteMapPath路徑 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
http://www.purecs.net/Threads/t376.aspx
在網頁上放置一個SiteMapPath可以提供使用者一個清楚的瀏覽路標指示,如果你的SiteMap是靜態不會變動的倒是很簡單,只要編寫好一個XML檔放上去,其它的事就可以不用管了,但是在動態網頁中SiteMap的路徑可能會隨著不同的情況而有所更動,這時預先建立的靜態SiteMap似乎就不怎麼好用了,因為你無法事先去預測SiteMap該有哪些路徑(就像現在這個論壇上面的SiteMap),這個時後你必需要用程式動態控制SiteMapPath中Node的連結路徑及顯示的文字,現在只要跟著下面的步驟做就可以簡單的做到這個功能。

1. 先在Web Form中建立一個ModifyPath方法
看不清楚 | 列印 | 複製
1private?SiteMapNode?ModifyPath(Object?sender,?SiteMapResolveEventArgs?e) ?
private SiteMapNode ModifyPath(Object sender, SiteMapResolveEventArgs e)
2. 在Page_Load 中註冊SiteMapResolve事件給ModifyPath方法
看不清楚 | 列印 | 複製
1SiteMap.SiteMapResolve?+=?new?SiteMapResolveEventHandler(this.ModifyPath); ?
SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(this.ModifyPath);
3. 最後在ModifyPath中撰寫動態路徑及所顯示的文字程式碼即可
看不清楚 | 列印 | 複製
1private?SiteMapNode?ModifyPath(object?sender,?SiteMapResolveEventArgs?e) ?
2{ ?
3????SiteMapNode?currentNode?=?SiteMap.CurrentNode.Clone(true); ?
4????SiteMapNode?modifyNode?=?currentNode; ?
5?
6????modifyNode.Url?=?"http://www.bbb.net"; ?
7????modifyNode.Title?=?"bbb"; ?
8?
9????if?(?(modifyNode?=?modifyNode.ParentNode)?!=?null) ?
10????{ ?
11????????modifyNode.Url?=?"http://www.aaa.net"; ?
12????????modifyNode.Title?=?"aaa"; ?
13????} ?
14?
15????return?currentNode; ?
16} ?
private SiteMapNode ModifyPath(object sender, SiteMapResolveEventArgs e) { SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true); SiteMapNode modifyNode = currentNode; modifyNode.Url = "http://www.bbb.net"; modifyNode.Title = "bbb"; if ( (modifyNode = modifyNode.ParentNode) != null) { modifyNode.Url = "http://www.aaa.net"; modifyNode.Title = "aaa"; } return currentNode; }
好了,你現在應該可以看到一點點成果,至少SiteMapPath中的結點能被程式控制了,剩下的只需要寫出ModifyPath中真正的取得路徑的程式碼,動態修改SiteMapPath就是這麼簡單。

看不清楚 | 列印 | 複製
1protected?void?Page_Load(object?sender,?EventArgs?e) ?
2{ ?
3????SiteMap.SiteMapResolve?+=?new?SiteMapResolveEventHandler(this.ModifyPath); ?
4} ?
5?
6private?SiteMapNode?ModifyPath(object?sender,?SiteMapResolveEventArgs?e) ?
7{ ?
8????SiteMapNode?currentNode?=?SiteMap.CurrentNode.Clone(true); ?
9????SiteMapNode?modifyNode?=?currentNode; ?
10????modifyNode.Url?=?"http://www.bbb.net"; ?
11????modifyNode.Title?=?"bbb"; ?
12?
13????if?(?(modifyNode?=?modifyNode.ParentNode)?!=?null) ?
14????{ ?
15????????modifyNode.Url?=?"http://www.aaa.net"; ?
16????????modifyNode.Title?=?"aaa"; ?
17????} ?
18?
19????return?currentNode; ?
20} ?
protected void Page_Load(object sender, EventArgs e) { 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 = "bbb"; if ( (modifyNode = modifyNode.ParentNode) != null) { modifyNode.Url = "http://www.aaa.net"; modifyNode.Title = "aaa"; } return currentNode; }

那如果是動態的無限級的網站應該怎么做呢,用遞歸上去做結點嗎?可是結點數量不一樣啊


Re: 動態修改SiteMapPath路徑

  • a
?0.0 (0 票) 在 17:20 發表 SiteMapNode有一個ChildNodes集合屬性
包含Add、Insert、Remove、Clear等方法可以用來新增或是刪除結點
所以不管是多少層都可以在SiteMapResolve事件中依邏輯增加或減少層級
例如你在這個網站上回文時原本的結點應該是

pure C# 技術社群 >> ASP.NET >> 動態修改SiteMpaPath路徑 >> 回覆文章

但是在程式中已經把 "回覆文章" 這個節點刪除掉了

看不清楚 | 列印 | 複製
1//currentNode?為"回覆文章" ?
2SiteMapNode?currentNode?=?SiteMap.CurrentNode.Clone(true); ?
3?
4if?(currentNode.Key.EndsWith("PostEditor.aspx".ToLower())) ?
5{ ?
6????//currentNode?為"回覆文章"的上一層?"動態修改SiteMpaPath路徑" ?
7????currentNode?=?currentNode.ParentNode; ?
8????currentNode.ChildNodes.Clear(); ?
9} ?
//currentNode 為"回覆文章" SiteMapNode currentNode = SiteMap.CurrentNode.Clone(true); if (currentNode.Key.EndsWith("PostEditor.aspx".ToLower())) { //currentNode 為"回覆文章"的上一層 "動態修改SiteMpaPath路徑" currentNode = currentNode.ParentNode; currentNode.ChildNodes.Clear(); }

所以無論是用遞歸或是任何你想的到的方法都可以
只要能自由的新增、刪除、修改結點就沒什麼是做不到的

轉載于:https://www.cnblogs.com/Nina-piaoye/archive/2006/10/24/537870.html

總結

以上是生活随笔為你收集整理的動態修改SiteMapPath路徑的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。