public void InvokeAction(ControllerContext context, String actionName)
        {
            Requires.NotNull(context, "context");
            Requires.NotNull(actionName, "actionName");

            MethodInfo method = GetSuitableMethod(context, actionName);
            if (method != null)
            {
                ParameterInfo[] parameters = method.GetParameters();

                Object[] parameterValues = GetParameterValues(parameters, context.RouteData);

                var actionContext = new ActionContext(context, actionName);
                IAsyncController asyncController = context.Controller as IAsyncController;
                if ((asyncController != null)&&(method.ReturnType.Equals(typeof(void))))
                {
                    asyncController.ActionCompleted += DefaultActionInvoker_ActionCompleted;
                    _contextCache.Add(asyncController, actionContext);
                    method.Invoke(context.Controller, parameterValues);
                }
                else
                {
                    IActionResult actionResult = method.Invoke(context.Controller, parameterValues) as IActionResult;
                    if (actionResult != null)
                    {
                        actionResult.Execute(actionContext);
                    }
                }
            }
        }
Beispiel #2
0
        public void Execute(ActionContext context)
        {
            Requires.NotNull(context, "context");

            if(String.IsNullOrEmpty(ViewName))
            {
                ViewName = context.ActionName;
            }
            var view = ViewEngineManager.Current.GetView(context.ControllerContext, ViewName);
            if (view != null)
            {
                var viewContext = new ViewContext(context.ControllerContext, ViewData);
                view.Render(viewContext);
            }
        }