protected void RenderRazorToResponse <TModel>(ExceptionContext filterContext, ViewEngineType viewType, string viewName, TModel model) { var strContent = RenderRazorToString(filterContext, viewType, viewName, model); filterContext.HttpContext.Response.Write(strContent); filterContext.HttpContext.Response.Flush(); filterContext.HttpContext.Response.End(); }
// Render Razor/Aspx to string and output stream protected string RenderRazorToString <TModel>(ExceptionContext filterContext, ViewEngineType viewType, string viewName, TModel model) { var ret = string.Empty; ViewData.Model = model; using (var writer = new StringWriter()) { switch (viewType) { case ViewEngineType.Razor: var viewEngineResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName); var viewContext = new ViewContext(ControllerContext, viewEngineResult.View, ViewData, TempData, writer); viewEngineResult.View.Render(viewContext, writer); viewEngineResult.ViewEngine.ReleaseView(ControllerContext, viewEngineResult.View); ret = writer.GetStringBuilder().ToString(); break; case ViewEngineType.Aspx: default: var view = new WebFormView(ControllerContext, viewName); var vdd = new ViewDataDictionary <TModel>(model); var viewCxt = new ViewContext(ControllerContext, view, vdd, new TempDataDictionary(), writer); viewCxt.View.Render(viewCxt, writer); ret = writer.ToString(); break; } } return(ret); }