Пример #1
0
        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);
        }
Пример #3
0
        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);
        }