我正在使用SP2010基础,但我认为自WSS3以来没有太多变化。
我正在尝试为基础项目创建一个自定义菜单,这是我到目前为止所做的。
static void Main(string[] args)
{
using (SPSite site = new SPSite("http://localhost:3002/"))
{
SPNavigation nav =site.RootWeb.Navigation;
//gets the correct order of top level menu items
SPNavigationNodeCollection nodes = nav.TopNavigationBar;
using (SPWeb web = site.OpenWeb())
{
SPNavigationNode toplinkbar = web.Navigation.GetNodeById(1002);
if (toplinkbar != null)
{
foreach (SPNavigationNode node in toplinkbar.Children)
PrintNode(node);
}
}
}
Console.Write("\nPress ENTER to continue....");
Console.ReadLine();
}
static void PrintNode(SPNavigationNode node)
{
Console.WriteLine(node.Title);
foreach (SPNavigationNode item in node.Children)
PrintNode(item);
}
所以第一部分toplinkbar.Children工作正常但是PrintNode node.Children中的foreach循环总是返回0,当我知道站点内有子站点时。
我打算使用SPSiteMapProvider获取子网站吗?
任何帮助都会很棒,因为这让我疯了!
答案 0 :(得分:0)
只需使用附加到TopNavigation的NavigationNodeCollection。这是TopNav信息的非传统来源。
当您加载“根”时节点以这种方式以断开的方式加载
我有一篇可能有所帮助的旧帖子。 http://gavinb.net/2008/05/27/sharepoint-navigation-elements-how-to-code-with-them