#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