public override void ExecuteResult(ControllerContext context) { var response = context.HttpContext.Response; var request = context.HttpContext.Request; // TODO: Add logic for not authorized requests string viewName = StatusCode == HttpStatusCode.NotFound ? NotFoundView : ErrorView; // We need to clear both headers and content // because Clear() doesn't clear the headers // see: http://msdn.microsoft.com/en-us/library/system.web.httpresponse.clear.aspx response.ClearHeaders(); response.ClearContent(); response.StatusCode = (int)StatusCode; // Certain versions of IIS will sometimes use their own error page when // they detect a server error. Setting this property indicates that we // want it to try to render ASP.NET MVC's error page instead. response.TrySkipIisCustomErrors = true; if (request.IsAjaxRequest()) { // TODO: Add logic for AJAX requests } var viewResult = new ViewResult { ViewName = viewName, ViewData = ViewData ?? new ViewDataDictionary() }; viewResult.ExecuteResult(context); }
public override void ExecuteResult(ControllerContext context) { CommandResult resultadobackendClient = null; if (context.Controller.ViewData.ModelState.IsValid) { var backendClient = ObjectFactory.GetInstance <IBackendClient>(); try { resultadobackendClient = backendClient.ExecuteCommand(command); } catch (FaultException <CommandFault> e) { foreach (var error in e.Detail.CommandErrors) { context.Controller.ViewData.ModelState.AddModelError(error.PropertyName, error.ErrorMessage); } } } if (!context.Controller.ViewData.ModelState.IsValid) { errorView.ViewData = context.Controller.ViewData; errorView.TempData = context.Controller.TempData; errorView.ExecuteResult(context); return; } //context.Controller.TempData["Resultado"] = "OK"; context.Controller.TempData["ResultadoCommand"] = resultadobackendClient; successAction.ExecuteResult(context); }
public override void ExecuteResult(ControllerContext context) { context.Controller.ViewData.Model = Model; if (context.HttpContext.Request.IsAjaxRequest()) { var view = new PartialViewResult { ViewName = GetAjaxViewName(context), ViewData = context.Controller.ViewData }; view.ExecuteResult(context); } else { var view = new ViewResult { ViewName = GetViewName(context), ViewData = context.Controller.ViewData }; view.ExecuteResult(context); } }
public override void ExecuteResult(ControllerContext context) { _razorViewResult.ViewData["MvcViewName"] = GetViewName(context.RouteData, ViewName); _razorViewResult.ViewName = "RazorBridgeView"; _razorViewResult.ExecuteResult(context); }
protected string RenderActionResultToString(ViewResult result) { result.ViewName = "AjaxAbmcImprimir"; // Create memory writer. var sb = new StringBuilder(); var memWriter = new StringWriter(sb); // Create fake http context to render the view. var fakeResponse = new HttpResponse(memWriter); var fakeContext = new HttpContext(System.Web.HttpContext.Current.Request, fakeResponse); var fakeControllerContext = new ControllerContext( new HttpContextWrapper(fakeContext), ControllerContext.RouteData, ControllerContext.Controller); var oldContext = System.Web.HttpContext.Current; System.Web.HttpContext.Current = fakeContext; // Render the view. result.ExecuteResult(fakeControllerContext); // Restore old context. System.Web.HttpContext.Current = oldContext; // Flush memory and return output. memWriter.Flush(); return(sb.ToString()); }
protected void Application_Error() { //Source: http://forums.asp.net/t/1505777.aspx?Error+Handling+in+global+asax //modified to return JSON if IsAjaxRequest is true HttpContext ctx = HttpContext.Current; KeyValuePair <string, object> lastError = new KeyValuePair <string, object>("ErrorMessage", ctx.Server.GetLastError().Message.ToString()); ctx.Response.Clear(); if (new HttpRequestWrapper(System.Web.HttpContext.Current.Request).IsAjaxRequest()) { Response.Write(JsonConvert.SerializeObject(new { error = true, message = "Exception: " + lastError.Value.ToString() }) ); } else { RequestContext rc = ((MvcHandler)ctx.CurrentHandler).RequestContext; string controllerName = rc.RouteData.GetRequiredString("controller"); IControllerFactory factory = ControllerBuilder.Current.GetControllerFactory(); IController controller = factory.CreateController(rc, controllerName); ControllerContext cc = new ControllerContext(rc, (ControllerBase)controller); ViewResult viewResult = new ViewResult { ViewName = "Error" }; viewResult.ViewData.Add(lastError); viewResult.ExecuteResult(cc); } ctx.Server.ClearError(); }
public override void ExecuteResult(ControllerContext context) { if (context == null) { throw new ArgumentNullException("context"); } var response = context.HttpContext.Response; var request = context.HttpContext.Request; var requestedUrl = GetRequestedUrl(request); NotFoundConfig.OnNotFound(context.RequestContext.HttpContext.Request, new Uri(requestedUrl)); this.ViewData["RequestedUrl"] = requestedUrl; this.ViewData["ReferrerUrl"] = GetReferrerUrl(request, request.Url.OriginalString); // Make sure the status code is 404 for the search engine bots response.StatusCode = 404; // Prevent IIS7 from overwriting our error page! response.TrySkipIisCustomErrors = true; var viewResult = new ViewResult { ViewName = this.ViewName, ViewData = this.ViewData }; response.Clear(); viewResult.ExecuteResult(context); }
public static void CaptureViewOutput(Controller controller, ViewResult view, StreamWriter streamWriter) { var currentContext = controller.ControllerContext.HttpContext; try { // get the Request and User objects from the current, unchanged context var currentRequest = HttpContext.Current.ApplicationInstance.Context.Request; var currentUser = HttpContext.Current.ApplicationInstance.Context.User; // create our new HttpResponse object containing our HtmlTextWriter var newResponse = new HttpResponse(streamWriter); // create a new HttpContext object using our new Response object and the existing Request and User objects var newContext = new HttpContextWrapper( new HttpContext(currentRequest, newResponse) { User = currentUser }); // swap in our new HttpContext object - output from this controller is now going to our HtmlTextWriter object controller.ControllerContext.HttpContext = newContext; // Run the ViewResult view.ExecuteResult(controller.ControllerContext); // flush the output newResponse.Flush(); } finally { // and no matter what happens, set the context back! controller.ControllerContext.HttpContext = currentContext; } }
protected void Application_Error() { var ex = Server.GetLastError(); //log the error! ErrorManager.WriteToErrorLog("", "", ex.Message, ex.HResult); HttpContext ctx = HttpContext.Current; KeyValuePair <string, object> error = new KeyValuePair <string, object>("ErrorMessage", ctx.Server.GetLastError().ToString()); ctx.Response.Clear(); RequestContext rc = ((MvcHandler)ctx.CurrentHandler).RequestContext; string controllerName = rc.RouteData.GetRequiredString("controller"); IControllerFactory factory = ControllerBuilder.Current.GetControllerFactory(); IController controller = factory.CreateController(rc, controllerName); ControllerContext cc = new ControllerContext(rc, (ControllerBase)controller); ViewResult viewResult = new ViewResult { ViewName = "Error" }; viewResult.ViewData.Add(error); viewResult.ExecuteResult(cc); ctx.Server.ClearError(); //ctx.Response.End(); }
public override void OnException(ExceptionContext filterContext) { var controller = filterContext.Controller as Controller; controller.Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError; controller.Response.TrySkipIisCustomErrors = true; filterContext.ExceptionHandled = true; var controllerName = (string)filterContext.RouteData.Values["controller"]; var actionName = (string)filterContext.RouteData.Values["action"]; var exception = filterContext.Exception; var model = new HandleErrorInfo(exception, controllerName, actionName); var view = new ViewResult(); view.ViewName = "Error"; view.ViewData = new ViewDataDictionary(); view.ViewData.Model = model; // capture model data var viewData = controller.ViewData; if (viewData != null && viewData.Count > 0) { viewData.ToList().ForEach(view.ViewData.Add); } // Show error view.ExecuteResult(filterContext); // log error Log.Error("Uncaught exception", exception); }
private static void MockExecuteResult(ErrorController controller, ViewResult result) { try { result.View = Mock.Of <IView>(); result.ExecuteResult(controller.ControllerContext); } catch { } }
public override void OnException(ExceptionContext filterContext) { var controller = filterContext.Controller as Controller; controller.Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError; controller.Response.TrySkipIisCustomErrors = true; filterContext.ExceptionHandled = true; var controllerName = (string)filterContext.RouteData.Values["controller"]; var actionName = (string)filterContext.RouteData.Values["action"]; var exception = filterContext.Exception; //need a model to pass exception data to error view var model = new HandleErrorInfo(exception, controllerName, actionName); var view = new ViewResult(); view.ViewName = "Error"; view.ViewData = new ViewDataDictionary(); view.ViewData.Model = model; //copy any view data from original control over to error view //so they can be accessible. var viewData = controller.ViewData; if (viewData != null && viewData.Count > 0) { viewData.ToList().ForEach(view.ViewData.Add); } //Instead of this ////filterContext.Result = view; //Allow the error view to display on the same URL the error occurred view.ExecuteResult(filterContext); //should do any logging after view has already been rendered for improved performance. //_logger.Error("Uncaught exception", exception); }
public override void ExecuteResult(ControllerContext context) { var contentType = context.RequestContext.HttpContext.Request.Headers["Accept"]; if (contentType != null && contentType.Contains("application/json")) { if (Model is IEnumerable && !(Model is string)) { Model = new CollectionWrapper { Collection = (IEnumerable)Model }; } var result = new JsonResult { Data = Model, JsonRequestBehavior = JsonRequestBehavior.AllowGet }; result.ExecuteResult(context); } else { context.Controller.ViewData.Model = Model; var result = new ViewResult { ViewData = context.Controller.ViewData }; result.ExecuteResult(context); } }
/// <summary> /// Render error view /// </summary> /// <param name="ctx">HttpContext</param> /// <param name="view">View name</param> /// <param name="viewData">For ViewData</param> public static void HandleError(this HttpContext ctx, string view, object viewData) { if (ctx == null) { throw new ArgumentNullException("ctx"); } if (view == null) { throw new ArgumentNullException("view"); } ctx.Response.Clear(); RequestContext rc = ((MvcHandler)ctx.CurrentHandler).RequestContext; string controllerName = rc.RouteData.GetRequiredString("controller"); IControllerFactory factory = ControllerBuilder.Current.GetControllerFactory(); IController controller = factory.CreateController(rc, controllerName); ControllerContext cc = new ControllerContext(rc, (ControllerBase)controller); ViewResult viewResult = new ViewResult { ViewName = view }; if (viewData != null) { foreach (var kv in viewData.ToDictionary()) { viewResult.ViewData.Add(kv.Key, kv.Value); } } viewResult.ExecuteResult(cc); ctx.Server.ClearError(); }
private static string RenderToString(ViewResult result, ControllerContext controllerContext) { StringWriter writer = new StringWriter(); ViewContext viewContext = new ViewContext(controllerContext, new WebFormView(controllerContext, "omg"), result.ViewData, result.TempData, writer); var blockRenderer = new BlockRenderer(controllerContext.HttpContext); result.ExecuteResult(controllerContext); //HtmlHelper h = new HtmlHelper(new ViewContext(controllerContext, new WebFormView("omg"), result.ViewData, result.TempData, ), new ViewPage()); //var blockRenderer = new BlockRenderer(controllerthis.db.HttpContext); //result.ExecuteResult(controllerContext); string s = blockRenderer.Capture( () => result.ExecuteResult(controllerContext) ); return(s); }
public override void ExecuteResult(ActionContext context) { ITempDataDictionaryFactory factory = context.HttpContext.RequestServices.GetService(typeof(ITempDataDictionaryFactory)) as ITempDataDictionaryFactory; ITempDataDictionary tempData = factory.GetTempData(context.HttpContext); tempData.SetViewModel(_jsonModel); tempData.SetViewModelProp(_contextProp); _innerResult.ExecuteResult(context); }
private new ActionResult View(string viewFolder, string viewName, object model = null) { var view = new ViewResult(); view.TempData = TempData; view.ViewName = (viewFolder != null ? ("~/Views/" + viewFolder + "/" + viewName + ".cshtml") : viewName); view.ViewData = ViewData; view.ViewData.Model = model; view.ExecuteResult(ControllerContext); return(null); }
public override void Execute(object model, ControllerContext context) { context.HttpContext = new HttpContextWrapper(HttpContext.Current); var viewResult = new ViewResult { TempData = context.Controller.TempData, ViewData = context.Controller.ViewData }; viewResult.ViewData.Model = null; viewResult.ExecuteResult(context); }
private static string RenderViewToString(Controller controller, ViewResult viewResult) { viewResult.ExecuteResult(controller.ControllerContext); IView view = viewResult.View; using (StringWriter writer = new StringWriter()) { ViewContext viewContext = new ViewContext(controller.ControllerContext, view, controller.ViewData, controller.TempData, writer); viewContext.View.Render(viewContext, writer); return(writer.ToString()); } }
protected void Application_Error(object sender, EventArgs e) { HttpContext httpContext = HttpContext.Current; // Для администратора отображаем стандартный вывод ошибки if (httpContext.User != null && httpContext.User.Identity != null && httpContext.User.Identity.IsAuthenticated) { return; } Exception ex = httpContext.Server.GetLastError(); httpContext.Response.Clear(); if (new HttpRequestWrapper(Request).IsAjaxRequest()) { Response.StatusCode = 500; Response.ContentType = "application/json"; Response.Write(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(new { errorMessage = ex.Message })); return; } RequestContext requestContext = ((MvcHandler)httpContext.CurrentHandler).RequestContext; IController controller = new HomeController(); var context = new ControllerContext(requestContext, (ControllerBase)controller); ViewResult viewResult = new ViewResult(); HttpException httpException = ex as HttpException; if (httpException != null) { viewResult.ViewBag.HttpCode = httpException.GetHttpCode(); // Исправляем ошибку ELMAH (Request Validation errors does not get logged) // https://code.google.com/p/elmah/issues/detail?id=217 if (httpException is HttpRequestValidationException) { Elmah.ErrorLog.GetDefault(httpContext).Log(new Error(httpException)); } } viewResult.ViewName = "Error"; viewResult.ViewData.Model = new HandleErrorInfo(ex, context.RouteData.GetRequiredString("controller"), context.RouteData.GetRequiredString("action")); viewResult.ExecuteResult(context); httpContext.ClearError(); }
/// <summary> /// Handle 404 exception and redirect it to the 404 error page, and fallback to NotFoundError view /// </summary> /// <param name="filterContext"></param> protected override void OnException(ExceptionContext filterContext) { //handle 404 exception if (filterContext.Exception is HttpException) { HttpException httpException = filterContext.Exception as HttpException; if (httpException.GetHttpCode() == 404) { filterContext.HttpContext.Response.StatusCode = 404; //add 404 page handling specified by url map string error404PageId = _PageFactory.UrlMap .ToNullHelper() .Propagate( urlMap => urlMap.Error404PageId) .Return(string.Empty); if (!string.IsNullOrEmpty(error404PageId)) { CMSPageRequest page404 = _PageFactory.GetPage(Request, error404PageId) as CMSPageRequest; if (page404 != null && page404.Exists) { filterContext.ExceptionHandled = true; ActionResult result404 = viewOrXsltFallback(page404); result404.ExecuteResult(ControllerContext); return; } } //go to provided Error view, structured url map 404 page is not used, only if the view exists //otherwise, use base procedure ViewResult viewResult = View("NotFoundError", new Error404() { Title = Ingeniux.Runtime.Properties.Resources.Error404Title, BodyCopy = Ingeniux.Runtime.Properties.Resources.Error404BodyCopy, Factory = _PageFactory }); ViewEngineResult viewEngineResult = viewResult.ViewEngineCollection.FindView(ControllerContext, viewResult.ViewName, viewResult.MasterName); if (viewEngineResult != null && viewEngineResult.View != null && viewEngineResult.ViewEngine != null) { filterContext.ExceptionHandled = true; viewResult.ExecuteResult(ControllerContext); return; } } } base.OnException(filterContext); }
public override void ExecuteResult(ControllerContext context) { var isAjaxRequest = context.HttpContext.Request["isAjax"]; if (isAjaxRequest != null && isAjaxRequest.ToLower() == "true") { _ajaxActionResult.ExecuteResult(context); } else { _viewResult.ExecuteResult(context); } }
public override void ExecuteResult(ControllerContext context) { base.ExecuteResult(context); ViewResult result = new ViewResult { ViewName = @"AccessDenied", ViewData = context.Controller.ViewData, TempData = context.Controller.TempData }; result.ExecuteResult(context); }
private void OutputView(ControllerContext context) { var viewReasult = new ViewResult() { ViewName = null, MasterName = null, ViewData = context.Controller.ViewData, TempData = context.Controller.TempData, ViewEngineCollection = ViewEngines.Engines }; viewReasult.ExecuteResult(context); }
protected override void HandleUnknownAction(string actionName) { var data = ViewData; //Custom code to resolve the view. ViewResult view = this.View <ErrorController>(c => c.NotFound()); if (data != null && data.Count > 0) { data.ToList().ForEach(view.ViewData.Add); } Response.StatusCode = (int)System.Net.HttpStatusCode.NotFound; Response.TrySkipIisCustomErrors = true; view.ExecuteResult(this.ControllerContext); }
public static void RenderView(this DirectControllerAction controllerAction, IView view, TextWriter writer) { var controllerContext = controllerAction.CreateControllerContext(); controllerContext.HttpContext.Response.Output = writer; var viewResult = new ViewResult { View = view, ViewEngineCollection = controllerAction.MvcApplication.ViewEngines }; viewResult.ExecuteResult(controllerContext); }
protected virtual void ExecuteCommonResult(ControllerContext context) { context.Controller.ViewData.Model = m_Message; var result = new ViewResult { ViewName = m_ViewName, MasterName = null, ViewData = context.Controller.ViewData, TempData = context.Controller.TempData, ViewEngineCollection = ((Controller)context.Controller).ViewEngineCollection }; result.ExecuteResult(context); }
protected override void HandleUnknownAction(string actionName) { var controllerName = (string)RouteData.Values["controller"]; var ex = Server.GetLastError(); var model = new HttpErrorViewModel(ex ?? new HttpException(500, "Something went wrong."), controllerName, actionName); var result = new ViewResult { ViewName = "~/Views/Error/Index.cshtml", ViewData = new ViewDataDictionary <HttpErrorViewModel>(model), }; Response.StatusCode = model.StatusCode; result.ExecuteResult(ControllerContext); }
public void OnException(ExceptionContext context) { if (!context.ExceptionHandled) { string controller = context.RouteData.Values["controller"].ToString(); string action = context.RouteData.Values["action"].ToString(); HandleErrorInfo boj = new HandleErrorInfo(context.Exception, controller, action); var view = new ViewResult(); view.ViewName = "CustomError"; view.ViewData = new ViewDataDictionary(); view.ViewData.Model = boj; view.ExecuteResult(context); context.ExceptionHandled = true; } }
public override void OnException(ExceptionContext filterContext) { var controller = filterContext.Controller as Controller; controller.Response.StatusCode = (int)System.Net.HttpStatusCode.InternalServerError; controller.Response.TrySkipIisCustomErrors = true; filterContext.ExceptionHandled = true; var controllerName = (string)filterContext.RouteData.Values["controller"]; var actionName = (string)filterContext.RouteData.Values["action"]; //var controllerName = "error"; //var actionName = "handelError"; var model = new HandleErrorInfo(filterContext.Exception, controllerName, actionName); if (filterContext.Exception is HttpAntiForgeryException) { filterContext.Result = new RedirectToRouteResult( new RouteValueDictionary { { "action", "Login" }, { "controller", "Account" } }); } else { var view = new ViewResult { ViewName = "Errorhandler", ViewData = new ViewDataDictionary() }; view.ViewData.Model = model; //copy any view data from original control over to error view //so they can be accessible. var viewData = controller.ViewData; if (viewData != null && viewData.Count > 0) { viewData.ToList().ForEach(view.ViewData.Add); } //Instead of this ////filterContext.Result = view; //Allow the error view to display on the same URL the error occurred view.ExecuteResult(filterContext); } }