public void OnProvidersExecuting(ApplicationModelProviderContext context) { if (context == null) { throw new ArgumentNullException(nameof(context)); } foreach (var controllerModel in context.Result.Controllers) { var resourceData = controllerModel.Attributes.OfType <AreaAttribute>().ToArray(); foreach (var actionModel in controllerModel.Actions) { var actionResourceData = actionModel.Attributes.OfType <ResourceAttribute>().ToArray(); if (actionResourceData.Length > 0) { var entity = new ResourceEntity(); if (resourceData.Length > 0) { entity.Area = resourceData[0].RouteValue; } entity.Controller = controllerModel.ControllerName; entity.Action = actionModel.ActionName; entity.Name = actionResourceData[0].GetResource(); ResourceData.AddResource(entity.Area + "-" + entity.Controller, entity); } } } }