private static string RenderContainerUsingRenderingEngine(IMVCGridDefinition gridDefinition, ContainerRenderingModel model) { IMVCGridRenderingEngine renderingEngine = GetRenderingEngineInternal(gridDefinition); using (MemoryStream ms = new MemoryStream()) { using (TextWriter tw = new StreamWriter(ms)) { renderingEngine.RenderContainer(model, tw); } return LocalEncoding.GetString(ms.ToArray()); } }
private static string RenderContainerUsingController(IMVCGridDefinition gridDefinition, HtmlHelper helper, ContainerRenderingModel model) { var controllerContext = helper.ViewContext.Controller.ControllerContext; ViewDataDictionary vdd = new ViewDataDictionary(model); TempDataDictionary tdd = new TempDataDictionary(); using (var sw = new StringWriter()) { var viewResult = ViewEngines.Engines.FindPartialView(controllerContext, gridDefinition.ContainerViewPath); var viewContext = new ViewContext(controllerContext, viewResult.View, vdd, tdd, sw); viewResult.View.Render(viewContext, sw); viewResult.ViewEngine.ReleaseView(controllerContext, viewResult.View); return sw.GetStringBuilder().ToString(); } }
public string GetBasePageHtml(HtmlHelper helper, string gridName, IMVCGridDefinition grid, object pageParameters) { string preload = ""; if (grid.QueryOnPageLoad && grid.PreloadData) { try { preload = RenderPreloadedGridHtml(helper, grid, gridName, pageParameters); } catch (Exception ex) { bool showDetails = ConfigUtility.GetShowErrorDetailsSetting(); if (showDetails) { string detail = "<div class='alert alert-danger'>"; detail += HttpUtility.HtmlEncode(ex.ToString()).Replace("\r\n", "<br />"); detail += "</div>"; preload = detail; } else { preload = grid.ErrorMessageHtml; } } } string baseGridHtml = MVCGridHtmlGenerator.GenerateBasePageHtml(gridName, grid, pageParameters); baseGridHtml = baseGridHtml.Replace("%%PRELOAD%%", preload); ContainerRenderingModel containerRenderingModel = new ContainerRenderingModel() { InnerHtmlBlock = baseGridHtml }; string html = RenderContainerHtml(helper, grid, gridName, containerRenderingModel); return html; }
private static string RenderContainerHtml(HtmlHelper helper, IMVCGridDefinition grid, string gridName, ContainerRenderingModel containerRenderingModel) { string container = containerRenderingModel.InnerHtmlBlock; switch (grid.RenderingMode) { case Models.RenderingMode.RenderingEngine: var renderingEngine = GetRenderingEngineInternal(grid); container = RenderContainerUsingRenderingEngine(grid, containerRenderingModel); break; case Models.RenderingMode.Controller: if (!String.IsNullOrWhiteSpace(grid.ContainerViewPath)) { container = RenderContainerUsingController(grid, helper, containerRenderingModel); } break; default: throw new InvalidOperationException(); } if (!container.Contains(containerRenderingModel.InnerHtmlBlock)) { throw new Exception("When rendering a container, you must output Model.InnerHtmlBlock inside the container (Raw)."); } return container; }
public void RenderContainer(ContainerRenderingModel model, TextWriter outputStream) { outputStream.Write(model.InnerHtmlBlock); }