/// <summary>
 /// </summary>
 /// <param name="siteMapPermission"></param>
 /// <param name="mainMenu"></param>
 /// <param name="maxLevel"></param>
 /// <param name="currentLevel"></param>
 /// <returns>return true main this menu is active.</returns>
 private static void SubMenuMatch(HtmlHelper helper, SiteMapPermission siteMapPermission,
     MainMenu mainMenu, int maxLevel, int currentLevel)
 {
     for (int i = 0; i < mainMenu.Current.ChildNodes.Count; i++)
     {
         ISiteMapNode childNode = mainMenu.Current.ChildNodes[i];
         string a = childNode.Title;
         if (Match(siteMapPermission, childNode)) //�������disabled
         {
             var childMainMenu = new MainMenu
             {
                 Current = childNode,
             };
             mainMenu.SubMenus.Add(childMainMenu);
             if (currentLevel + 1 <= maxLevel)
             {
                 SubMenuMatch(helper, siteMapPermission, childMainMenu, maxLevel, currentLevel + 1);
                 if (childMainMenu.Current.Equals(helper.MvcSiteMap().SiteMap.CurrentNode))
                 {
                     childMainMenu.Actived = true;
                     mainMenu.Actived = true;
                 }
             }
         }
     }
 }
        /// <summary>
        ///    
        /// </summary>
        /// <param name="helper"></param>
        /// <param name="siteMapPermission"></param>
        /// <param name="maxLevel"></param>
        /// <returns></returns>
        public static IList<MainMenu> GetUserMenus(this HtmlHelper helper,
            SiteMapPermission siteMapPermission, int maxLevel)
        {
            ISiteMapNode node = helper.MvcSiteMap().SiteMap.RootNode;
            var result = new List<MainMenu>();

            for (int i = 0; i < node.ChildNodes.Count; i++)
            {
                ISiteMapNode childNode = node.ChildNodes[i];
                if (Match(siteMapPermission, childNode))
                {
                    var mainMenu = new MainMenu
                    {
                        Current = childNode,
                    };
                    SubMenuMatch(helper, siteMapPermission, mainMenu, maxLevel, 0);
                    result.Add(mainMenu);
                }
            }
            return result;
        }
 private static bool Match(SiteMapPermission siteMapPermission, ISiteMapNode childNode)
 {
     return siteMapPermission.IsAccessibleToUser(childNode)
            && !childNode.MetaRobotsValues.Contains("disabled");
 }