C# 導航欄無限層級樹

        #region 獲取導航欄方法-無限層級
        /// <summary>
        /// 獲取導航欄方法-無限層級
        /// </summary>
        /// <returns></returns>
        public string GetNavigationbar()
        {
            //獲取全部集合
            List<NavigationbarModel> allModel = new List<NavigationbarModel>();
            List<Category> list = NavigationbarList();
            List<NavigationbarModel> topModels = new List<NavigationbarModel>();
            string json = "";
            try
            {
                if (categoryList != null && categoryList.Count > 0)
                {
                    foreach (var category in categoryList)
                    {
                        NavigationbarModel model = new NavigationbarModel();
                        model.Id = category.Id;
                        model.ModuleName = category.CategoryName;
                        allModel.Add(model);
                    }
                    //篩選頂級分類
                    var topItems = allModel.Where(e => e.ParentId == 0).ToList(); //頂級分類

 

                    foreach (var item in topItems)
                    {
                        NavigationbarModel topModel = new NavigationbarModel();
                        topModel.Id = item.Id;
                        topModel.ModuleName = item.ModuleName;
                        LoopToAppendChildren(allModel, topModel);
                        topModels.Add(topModel);
                    }

 

                    json = JsonConvert.SerializeObject(topModels);
                }
            }
            catch (Exception exception)
            {
                _logger.Error(exception);
            }

 

            return json;
        }
        #endregion

 

        #region 獲取無限分級數據

 

        /// <summary>
        /// 繼續追溯子類
        /// </summary>
        /// <param name="allList">全部數據</param>
        /// <param name="curItem">當前節點</param>
        protected void LoopToAppendChildren(List<NavigationbarModel> allList, NavigationbarModel curItem)
        {
            var subItems = allList.Where(ee => ee.ParentId == curItem.Id).ToList();
            curItem.Child = new List<NavigationbarModel>();
            curItem.Child.AddRange(subItems);
            foreach (var subItem in subItems)
            {
                LoopToAppendChildren(allList, subItem);
            }
        }

        #endregion


    #region 導航欄
    /// <summary>
    /// 導航欄
    /// </summary>
    public class NavigationbarModel
    {
        /// <summary>
        /// 標識
        /// </summary>
        public int Id { get; set; }
        /// <summary>
        /// 父標識
        /// </summary>
        public int ParentId { get; set; }
        /// <summary>
        /// 路徑
        /// </summary>
        public string Path { get; set; }
        /// <summary>
        /// 模塊名
        /// </summary>
        public string ModuleName { get; set; }
        /// <summary>
        /// 層級級別
        /// </summary>
        public int Level { get; set; }
        /// <summary>
        /// 下一層級數組
        /// </summary>
        public List<NavigationbarModel> Child { get; set; }
    }
    #endregion

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章