public override void Invoke(ControllerExecutionContext executionCtx) { var result = executionCtx.InvocationResult as ActionResult; if (result != null) { var areaName = executionCtx.ControllerDescriptor.Area; var controllerName = executionCtx.ControllerDescriptor.Name; var actionName = executionCtx.SelectedAction.Name; var resultCtx = new ActionResultContext(areaName, controllerName, actionName, executionCtx.HttpContext); result.Execute(resultCtx, executionCtx.ControllerContext, Services); } Proceed(executionCtx); }
public override void Invoke(ControllerExecutionContext executionCtx) { var action = executionCtx.RouteData.GetRequiredString("action"); var selectedActions = executionCtx.ControllerDescriptor.Actions. Where(ad => string.Compare(ad.Name, action, StringComparison.OrdinalIgnoreCase) == 0).ToList(); if (selectedActions.Count > 1) { //TODO: disambiguation here? } else { var selectedAction = selectedActions.FirstOrDefault(); if (selectedAction == null) throw new HttpException(404, "'action' not found"); executionCtx.SelectedAction = selectedAction; } Proceed(executionCtx); }