Exemple #1
0
        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());
            }
        }
Exemple #2
0
 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();
     }
 }
Exemple #3
0
        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;
        }
Exemple #4
0
        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);
 }