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); } } } }
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); } }