2011-02-15 55 views
1

我正在嘗試爲Sharepoint 2010製作網站地圖,該網站地圖將列出每個網站和該網站的當前導航項目。網站之間的導航是通過頂級導航完成的。但是,我在爲每個網站獲取當前導航項目時遇到問題。看來,每次我爲Web獲取PortalSiteMapProvider時,都會返回整個網站集的提供者。我如何獲得該網站的物品?我爲每個網站運行此代碼我想要獲得的項目:獲取所有網站集和網站的當前導航項 - SP2010

var provider = new PortalSiteMapProvider(); 
provider.NavigationType = PortalNavigationType.Current; 
provider.CurrentWeb = web; 
var rootNode = provider.RootNode; 

任何人都知道該從哪裏下去?

編輯: 因此,訪問每個網站集並運行此代碼是不可能的。 PortalSiteMapProvider不允許它。但是,可以使用位於layouts文件夾中的ashx運行此代碼。我只需要從網站收集我想列舉訪問ashx的文件,它會工作得很好:)

回答

0

因此,訪問每個網站集並運行此代碼是不可能的。 PortalSiteMapProvider不允許它。但是,可以使用位於layouts文件夾中的ashx運行此代碼。我只需要從我想要枚舉的網站集訪問該ashx文件,並且它將工作得很好:)

0
private void DrawWeb(SPWeb web, TreeNode node) 
     { 
      SPWebCollection webCol = web.Webs; 
      foreach (SPWeb w in webCol) 
      { 
       var n = new TreeNode(w.Title); 
       node.ChildNodes.Add(n); 
       DrawWeb(w, n); 
       w.Dispose(); 
      } 
     } 

嘗試調用此方法,如:

TreeNode webNode = new TreeNode(rootNode.Title); 
DrawWeb(provider.CurrentWeb, webNode); 

希望這會有所幫助。