歡迎光臨 pure C# 技術社群. 登入註冊

pure C# 技術社群

- Microsoft .NET Framework 相關技術非官方討論社群 -

動態修改SiteMapPath路徑

  • 1
  • 2
  • [第2/2頁 共16項]
#9

Re: 動態修改SiteMapPath路徑

  • a
 0.0 (0 人評價)
如果把程式改成這樣呢

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息


贊助商連結

#10

Re: 動態修改SiteMapPath路徑

  • a
 0.0 (0 人評價)
楼上的办法可行,但是有一些弊端:
首先要在一个页面的后台文件中写入其他页面的控制逻辑,不太全理。
就算把这部分提取到一个类中,如果涉及到的页面太多,或者逻辑很复杂,也不太好。

有没有在Sitemappath1_PreRender时再控制里面显示内容的方法?

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息

#11

Re: 動態修改SiteMapPath路徑

  • a
 0.0 (0 人評價)
目前為止SiteMap.SiteMapResolve事件中並沒有控制其他頁面,它只是單純的制定一些SiteMap的規則。(這還蠻符合"SiteMapResolve"的原意)
只不過預設的SiteMapProvider會抓取SiteMap並顯示出來,只要配合BasePage的繼承架構,應該還不至於太離譜。

當然如果你還是希望能有更適合的方式,建議可以朝SiteMapProvider著手,比起企圖在SiteMapPath.PreRender事件中控制顯示內容,不如寫一個自訂的SiteMapProvider指定給SiteMapPath控件
這方面的技巧不是三言兩語說的完的,也許等我哪天有空可以再花點時間仔細研究,到時再發表一些心得來跟大家討論。

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息

#12

Re: 動態修改SiteMapPath路徑

  • a
 0.0 (0 人評價)
就是说SiteMap是程序运行时通过web.sitemap加载进去的,SiteMapResolve这个事件只要动态修改了SiteMap(整个站点的),而不是修改了页面中的SiteMapPath控件的显示,不知这么理解对不对?

SiteMapProvider这个还没有研究过,有时间了解一下,也期待你的研究结果,:-)
再次感谢楼主的回复。

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息

#13

Re: 動態修改SiteMapPath路徑

  • a
 0.0 (0 人評價)
是的。

另外如果你等不急要快速學習更多關於SiteMapProvider的相關知識,我想要跟你分享一篇還不錯的文章
http://msdn.microsoft.com/msdnmag/issues/06/02/WickedCode/default.aspx
其中的Figure 1(就是那個小得看不清的第一張圖)已經大略的把基本的架構說明的很清楚了,有了正確的觀念要理解其它高級技巧也將更容易。

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息

#14

Re: 動態修改SiteMapPath路徑

  • a
 0.0 (0 人評價)
好的,谢谢,学习一下

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息

#15

Re: 動態修改SiteMapPath路徑

  • a
 0.0 (0 人評價)
如何用treeview與sitemapoath結合起來應用,並做導航條呢?
這個一定要放在同一頁面才可以嗎?
也就是一定要結合master page才可以使用嗎?

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息


贊助商連結

#16

Re: 動態修改SiteMapPath路徑

  • a
 0.0 (0 人評價)
 在SiteMapPath的Init和Unload事件中这么搞一下就ok了,不知道对不对:)   
       protected void SiteMapPath1_Init(object sender, EventArgs e)
        {
            SiteMap.SiteMapResolve += new SiteMapResolveEventHandler(this.ModifyPath);
        }
       
        protected void SiteMapPath1_Unload(object sender, EventArgs e)
        {
            SiteMap.SiteMapResolve -= new SiteMapResolveEventHandler(this.ModifyPath);
        }

  • 回覆
  • |
  • 引用
  • |
  • 編輯
  • |
  • 私人訊息
  • 1
  • 2
  • [第2/2頁 共16項]