我正在尝试为Sharepoint 2010制作一个站点地图,列出每个站点和该站点的当前导航项。站点之间的导航通过顶部导航完成。但是,我在获取每个站点的当前导航项时遇到问题。似乎每次我获得Web的PortalSiteMapProvider时,它都会返回整个网站集的提供者。如何获取该网站的商品?我为每个想要获取项目的网站运行此代码:
var provider = new PortalSiteMapProvider();
provider.NavigationType = PortalNavigationType.Current;
provider.CurrentWeb = web;
var rootNode = provider.RootNode;
任何人都知道从哪里开始?
编辑: 因此,无法访问每个网站集并运行此代码。 PortalSiteMapProvider不允许它。但是,可以在位于layouts文件夹中的ashx中运行此代码。我只需要从我想要枚举的网站集中访问该ashx文件,它就可以正常工作:)
答案 0 :(得分: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);
希望这会有所帮助。
答案 1 :(得分:0)
因此无法访问每个网站集并运行此代码。 PortalSiteMapProvider不允许它。但是,可以在位于layouts文件夹中的ashx中运行此代码。我只需要从我想要枚举的网站集中访问该ashx文件,它就可以正常工作:)