/// <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; }