public void Run(ControllerBase controller, Dictionary<string, object> parameters) { var paramInfo = _method.GetParameters(); var paramValues = new object[paramInfo.Length]; for (var i = 0; i < paramInfo.Length; ++i) { object currentValue = null; if(!parameters.TryGetValue(paramInfo[i].Name, out currentValue)) { if (paramInfo[i].ParameterType.IsClass) { currentValue = null; } else { currentValue = Activator.CreateInstance(paramInfo[i].ParameterType); } } paramValues[i] = Convert.ChangeType(currentValue, paramInfo[i].ParameterType); } _method.Invoke(controller, paramValues); }
private ViewBase FindAndExecuteView(string controllerName, string actionName, Dictionary<string, object> parameters, TextWriter output, ControllerBase controller, string layoutName) { var viewKey = controllerName + "/" + actionName; CachedView viewData; viewData = GetCachedView(viewKey); if (viewData != null) { viewData = CheckCachedViewValidity(controllerName, actionName, viewData); } if (viewData == null) { viewData = LoadView(controllerName, actionName, viewKey, viewData); SaveViewInCache(viewKey, viewData); } var view = (ViewBase)Activator.CreateInstance(viewData.ViewType); view.Layout = layoutName; InitializeView(controller, null, view, output, new RenderContext()); ExecuteViewWithFilter(controllerName, actionName, parameters, controller, view); return view; }
private ViewBase FindAndExecuteSharedView(SharedViewRole role, string sharedViewName, TextWriter output, ControllerBase controller, ViewBase parentView, Stream bodyContent, Dictionary<string,Action> sections) { var viewKey = "/#" + sharedViewName; CachedView viewData; viewData = GetCachedView(viewKey); if (viewData != null) { viewData = CheckCachedSharedViewValidity(role, sharedViewName, viewData); } if (viewData == null) { viewData = LoadSharedView(role, sharedViewName, viewKey, viewData); SaveViewInCache(viewKey, viewData); } var view = (ViewBase)Activator.CreateInstance(viewData.ViewType); InitializeView(controller, parentView, view, output, new RenderContext { BodyContent = bodyContent,Sections = sections }); view.Execute(); return view; }
private void ExecuteViewWithFilter(string controllerName, string actionName, Dictionary<string, object> parameters, ControllerBase controller, ViewBase view) { _pipelineFilter.BeforeView(controller, controllerName, actionName, parameters); try { view.Execute(); } catch (Exception ex) { _pipelineFilter.ViewError(controller, controllerName, actionName, parameters, ex); throw; } _pipelineFilter.AfterView(controller, controllerName, actionName, parameters); }
private void ExecuteActionWithFilter(string controllerName, string actionName, Dictionary<string, object> parameters, ControllerBase controller, IActionRunner actionRunner) { _pipelineFilter.BeforeAction(controller, controllerName, actionName, parameters); try { actionRunner.Run(controller, parameters); } catch (Exception ex) { _pipelineFilter.ActionError(controller, controllerName, actionName, parameters, ex); throw; } _pipelineFilter.AfterAction(controller, controllerName, actionName, parameters); }
public IActionRunner FindAction(ControllerBase controller, string controllerName, string actionName) { return new Runner(controller.GetType().GetMethod(actionName)); }
public void RequestComplete(ControllerBase controller, string controllerName, string actionName, Dictionary<string, object> parameters) { }
private ViewBase FindAndExecuteView(string controllerName, string actionName, Dictionary <string, object> parameters, TextWriter output, ControllerBase controller, string layoutName) { var viewKey = controllerName + "/" + actionName; CachedView viewData; viewData = GetCachedView(viewKey); if (viewData != null) { viewData = CheckCachedViewValidity(controllerName, actionName, viewData); } if (viewData == null) { viewData = LoadView(controllerName, actionName, viewKey, viewData); SaveViewInCache(viewKey, viewData); } var view = (ViewBase)Activator.CreateInstance(viewData.ViewType); view.Layout = layoutName; InitializeView(controller, null, view, output, new RenderContext()); ExecuteViewWithFilter(controllerName, actionName, parameters, controller, view); return(view); }
public void AfterAction(ControllerBase controller, string controllerName, string actionName, Dictionary<string, object> parameters) { }
public void BeforeView(ControllerBase controller, string controllerName, string actionName, Dictionary<string, object> parameters) { }
private void InitializeController(ControllerBase controller) { controller.ViewBag = new DynamicDictionary(); }
private void ExecuteViewWithFilter(string controllerName, string actionName, Dictionary <string, object> parameters, ControllerBase controller, ViewBase view) { _pipelineFilter.BeforeView(controller, controllerName, actionName, parameters); try { view.Execute(); } catch (Exception ex) { _pipelineFilter.ViewError(controller, controllerName, actionName, parameters, ex); throw; } _pipelineFilter.AfterView(controller, controllerName, actionName, parameters); }
private void ExecuteActionWithFilter(string controllerName, string actionName, Dictionary <string, object> parameters, ControllerBase controller, IActionRunner actionRunner) { _pipelineFilter.BeforeAction(controller, controllerName, actionName, parameters); try { actionRunner.Run(controller, parameters); } catch (Exception ex) { _pipelineFilter.ActionError(controller, controllerName, actionName, parameters, ex); throw; } _pipelineFilter.AfterAction(controller, controllerName, actionName, parameters); }
public void ViewError(ControllerBase controller, string controllerName, string actionName, Dictionary<string, object> parameters, Exception error) { }
private void InitializeView(ControllerBase controller, ViewBase parentView, ViewBase view, TextWriter output, RenderContext renderContext) { if (controller != null) { view.ViewBag = controller.ViewBag; } else { view.ViewBag = parentView.ViewBag; } view.InitializeView(output, this, renderContext); }
private ViewBase FindAndExecuteSharedView(SharedViewRole role, string sharedViewName, TextWriter output, ControllerBase controller, ViewBase parentView, Stream bodyContent, Dictionary <string, Action> sections) { var viewKey = "/#" + sharedViewName; CachedView viewData; viewData = GetCachedView(viewKey); if (viewData != null) { viewData = CheckCachedSharedViewValidity(role, sharedViewName, viewData); } if (viewData == null) { viewData = LoadSharedView(role, sharedViewName, viewKey, viewData); SaveViewInCache(viewKey, viewData); } var view = (ViewBase)Activator.CreateInstance(viewData.ViewType); InitializeView(controller, parentView, view, output, new RenderContext { BodyContent = bodyContent, Sections = sections }); view.Execute(); return(view); }