BreadcrumbViewComponent.cs 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. using Abp.Authorization;
  2. using Abp.Localization;
  3. using Microsoft.AspNetCore.Mvc;
  4. namespace VberAdmin.Web.Views.Shared.Components.Breadcrumb;
  5. public class BreadcrumbViewComponent : VberAdminViewComponent
  6. {
  7. public BreadcrumbViewComponent(ILocalizationContext localizationContext)
  8. {
  9. _localizationContext = localizationContext;
  10. }
  11. private ILocalizationContext _localizationContext;
  12. public IViewComponentResult Invoke(string activeMenu = "")
  13. {
  14. var permission = PermissionManager.GetPermissionOrNull(activeMenu);
  15. if (string.IsNullOrEmpty(activeMenu) || permission == null)
  16. {
  17. return View(null);
  18. }
  19. ViewBag.ActiveMenu = activeMenu;
  20. var model = new BreadcrumbViewModel(permission.DisplayName.Localize(_localizationContext));
  21. var breadcrumbs = GetParentName(permission, new List<string>());
  22. breadcrumbs.Reverse();
  23. model.Breadcrumbs = breadcrumbs;
  24. return View(model);
  25. }
  26. private List<string> GetParentName(Permission permission, List<string> breadcrumbs)
  27. {
  28. if (permission.Parent == null)
  29. {
  30. return breadcrumbs;
  31. }
  32. breadcrumbs.Add(permission.DisplayName.Localize(_localizationContext));
  33. return GetParentName(permission.Parent, breadcrumbs);
  34. }
  35. }
  36. public class BreadcrumbViewModel
  37. {
  38. public BreadcrumbViewModel(string name)
  39. {
  40. Name = name;
  41. Breadcrumbs = new List<string>();
  42. }
  43. public string Name { get; set; }
  44. public List<string> Breadcrumbs { get; set; }
  45. }