Loading a menu structure on every razor page in asp .NET Core

190 views Asked by At

After user authentication I'm supposed to change the user menu based on the roles of the user.

To do this, I created a service which fetched the menu the user is expected to see:

        public List<MenuStructure> LoadCompleteMenuRole(string role)
        {
            List<MenuStructure> resultList = null;

            var menuHeaders = LoadMenuHeadersForTheGivenRole(role);

            if (menuHeaders != null && menuHeaders.Count > 0)
            {
                resultList = new List<MenuStructure>();

                foreach (var menuHeader in menuHeaders)
                {
                    var menuStructure = new MenuStructure
                    {
                        MenuName = menuHeader.HeaderName,
                        Caption = menuHeader.Caption
                    };

                    var menuDetails = LoadMenuDetailsForTheGivenHeader(menuHeader.Id);

                    if (menuDetails != null && menuDetails.Count > 0)
                    {
                        menuStructure.MenuElements = new List<MenuElement>();

                        foreach (var menuDetail in menuDetails)
                        {
                            var menuElement = new MenuElement
                            {
                                ElementName = menuDetail.DetailName,
                                ElementCaption = menuDetail.Caption,
                                Destination = menuDetail.Destination
                            };

                            menuStructure.MenuElements.Add(menuElement);
                        }
                    }

                    resultList.Add(menuStructure);
                }
            }

            return resultList;
        }

My problem? Where do I implement the service so the menus get loaded in every razor page I create?

0

There are 0 answers