public override void Invoke(ControllerExecutionContext executionCtx) { var result = executionCtx.SelectedAction.Action(executionCtx.Controller, new object[0]); executionCtx.InvocationResult = result; Proceed(executionCtx); }
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); result.Execute(resultCtx, this.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) { // disambiguation here? } else { var selectedAction = selectedActions.FirstOrDefault(); if (selectedAction == null) throw new HttpException(404, "'action' not found"); executionCtx.SelectedAction = selectedAction; } Proceed(executionCtx); }