SPNavigation.Children始终返回0

时间:2011-05-08 04:07:59

标签: sharepoint sharepoint-2010 wss

我正在使用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获取子网站吗?

任何帮助都会很棒,因为这让我疯了!

1 个答案:

答案 0 :(得分:0)

只需使用附加到TopNavigation的NavigationNodeCollection。这是TopNav信息的非传统来源。
当您加载“根”时节点以这种方式以断开的方式加载 我有一篇可能有所帮助的旧帖子。 http://gavinb.net/2008/05/27/sharepoint-navigation-elements-how-to-code-with-them