private List <NavSiteMapNode> GetNavNodesAfterCheck(NavSiteMap siteMap) { #region 修改Enable属性, 在前端渲染时根据Enable属性判断是否需要显示 List <NavSiteMapNode> result = new List <NavSiteMapNode>(); // 如果第二级没有可以显示, 则第一级不显示 foreach (NavSiteMapNode level1_item in siteMap.Nodes) { ////功能权限 if (!level1_item.Enable) { continue; } NavSiteMapNode menuNode_level1 = new NavSiteMapNode(level1_item); if (this.Request.Url.AbsoluteUri.ToLower().Contains(menuNode_level1.Url.ToLower())) { menuNode_level1.Selected = true; } menuNode_level1.Enable = false; //初始化, 根据是否有子级菜单决定是否显示 foreach (NavSiteMapNode level2_item in level1_item.Nodes) { if (level2_item.Enable == false) { continue; } NavSiteMapNode menuNode_level2 = new NavSiteMapNode(level2_item); foreach (NavSiteMapNode level3_item in level2_item.Nodes) { if (level3_item.Enable == false) { continue; } NavSiteMapNode menuNode_level3 = new NavSiteMapNode(level3_item); menuNode_level3.Enable = forceMenuShow || GetEnable(level3_item); if (menuNode_level3.Enable) { if (this.Request.Url.AbsoluteUri.ToLower().Contains(menuNode_level3.Url.ToLower())) { menuNode_level2.Selected = true; } menuNode_level2.Nodes.Add(menuNode_level3); menuNode_level2.Enable = true; } } menuNode_level2.Enable = forceMenuShow || GetEnable(level2_item); if (menuNode_level2.Enable) { if ((level2_item.Nodes.Count > 0 && menuNode_level2.Nodes.Count > 0) || level2_item.Nodes.Count == 0) { if (this.Request.Url.AbsoluteUri.ToLower().Contains(menuNode_level2.Url.ToLower()) || menuNode_level2.Selected) { menuNode_level1.Selected = true; } menuNode_level1.Nodes.Add(menuNode_level2); menuNode_level1.Enable = true; } } } if (!menuNode_level1.Enable && menuNode_level1.Url != "#" && GetEnable(menuNode_level1)) { menuNode_level1.Enable = true; } if (menuNode_level1.Enable) { result.Add(menuNode_level1); } } #endregion return(result); }