コード例 #1
0
    public static string RenderPartialToString(this ControllerBase controller, string partialName, object model)
    {
        var vd = new ViewDataDictionary(controller.ViewData);
        var vp = new ViewPage
        {
            ViewData    = vd,
            ViewContext = new ViewContext(),
            Url         = new UrlHelper(controller.ControllerContext.RequestContext)
        };
        ViewEngineResult result = ViewEngines
                                  .Engines
                                  .FindPartialView(controller.ControllerContext, partialName);

        if (result.View == null)
        {
            throw new InvalidOperationException(
                      string.Format("The partial view '{0}' could not be found", partialName));
        }
        var partialPath = ((WebFormView)result.View).ViewPath;

        vp.ViewData.Model = model;
        Control control = vp.LoadControl(partialPath);

        vp.Controls.Add(control);
        var sb = new StringBuilder();

        using (var sw = new StringWriter(sb))
        {
            using (var tw = new HtmlTextWriter(sw))
            {
                vp.RenderControl(tw);
            }
        }
        return(sb.ToString());
    }
コード例 #2
0
ファイル: ViewHelper.cs プロジェクト: ryuki/YTech.SIMK.WMTI
        public static string RenderPartialToString(string controlName, object viewData, object model, System.Web.Routing.RequestContext viewContext)
        {
            ViewDataDictionary vd = new ViewDataDictionary(viewData);
            ViewPage           vp = new ViewPage {
                ViewData = vd
            };

            vp.ViewData       = vd;
            vp.ViewData.Model = model;
            vp.ViewContext    = new ViewContext();
            vp.Url            = new UrlHelper(viewContext);

            Control control = vp.LoadControl(controlName);

            vp.Controls.Add(control);

            StringBuilder sb = new StringBuilder();

            using (StringWriter sw = new StringWriter(sb))
                using (HtmlTextWriter tw = new HtmlTextWriter(sw))
                {
                    vp.RenderControl(tw);
                }

            return(sb.ToString());
        }
コード例 #3
0
ファイル: TemplateHelper.cs プロジェクト: zino974/Serenity
        public static string RenderViewToString(string controlPath, ViewDataDictionary data)
        {
            var renderer = Dependency.TryResolve <ITemplateRenderer>();

            if (renderer != null)
            {
                return(renderer.Render(controlPath, data));
            }

            StringBuilder sb = new StringBuilder();

            if (controlPath != null && controlPath.EndsWith(".cshtml", System.StringComparison.InvariantCultureIgnoreCase))
            {
                data = data ?? new ViewDataDictionary(new Dictionary <string, object>());
                var httpBase = new HttpContextWrapper(HttpContext.Current);

                var controller = new FakeController();
                var route      = new RouteData();
                route.Values.Add("controller", "something");
                var controllerContext = new ControllerContext(httpBase, route, controller);

                var actualPath = controlPath;
                if (actualPath.StartsWith("~/"))
                {
                    actualPath = Path.Combine(HostingEnvironment.ApplicationPhysicalPath,
                                              actualPath.Substring(2).Replace("/", "\\"));
                }

                if (!File.Exists(actualPath))
                {
                    throw new ArgumentOutOfRangeException("controlPath", String.Format("controlPath: {0}", actualPath));
                }

                var view = new RazorView(controllerContext, controlPath, null, false, null, null);
                using (StringWriter sw = new StringWriter(sb))
                {
                    var viewContext = new ViewContext(controllerContext, view, data, new TempDataDictionary(), sw);
                    view.Render(viewContext, sw);
                }
            }
            else
            {
                ViewPage vp = new ViewPage {
                    ViewData = data
                };
                Control control = vp.LoadControl(controlPath);
                vp.Controls.Add(control);
                using (StringWriter sw = new StringWriter(sb))
                    using (HtmlTextWriter tw = new HtmlTextWriter(sw))
                    {
                        vp.RenderControl(tw);
                    }
            }

            return(sb.ToString());
        }
コード例 #4
0
ファイル: RenderView.cs プロジェクト: cherther/SongSearch
        public static string RenderPartialToString(string controlName, object viewData)
        {
            ViewPage viewPage = new ViewPage() { ViewContext = new ViewContext() };

            viewPage.ViewData = new ViewDataDictionary(viewData);
            viewPage.Controls.Add(viewPage.LoadControl(controlName));

            StringBuilder sb = new StringBuilder();
            using (StringWriter sw = new StringWriter(sb)) {
                using (HtmlTextWriter tw = new HtmlTextWriter(sw)) {
                    viewPage.RenderControl(tw);
                }
            }

            return sb.ToString();
        }
コード例 #5
0
        /// <summary>The render partial to string.</summary>
        /// <param name="controlName">The control name.</param>
        /// <param name="viewData">The view data.</param>
        /// <returns>The <see cref="string"/>.</returns>
        private static string RenderPartialToString(string controlName, object viewData)
        {
            var viewPage = new ViewPage {
                ViewContext = new ViewContext(), ViewData = new ViewDataDictionary(viewData)
            };

            viewPage.Controls.Add(viewPage.LoadControl(controlName));

            var sb = new StringBuilder();

            using (var sw = new StringWriter(sb)) {
                using (var tw = new HtmlTextWriter(sw)) {
                    viewPage.RenderControl(tw);
                }
            }

            return(sb.ToString());
        }
コード例 #6
0
ファイル: MVCHelper.cs プロジェクト: kolyan1981by/monop
        public static string RenderPartialToString(string controlName, object viewData)
        {
            ViewDataDictionary vd = new ViewDataDictionary(viewData);
            ViewPage vp = new ViewPage { ViewData = vd };
            Control control = vp.LoadControl(controlName);

            vp.Controls.Add(control);

            StringBuilder sb = new StringBuilder();
            using (StringWriter sw = new StringWriter(sb))
            {
                using (HtmlTextWriter tw = new HtmlTextWriter(sw))
                {
                    vp.RenderControl(tw);
                }
            }

            return sb.ToString();
        }
コード例 #7
0
        public static string RenderViewToString(string viewName, ViewDataDictionary viewData)
        {
            ViewPage vp = new ViewPage {
                ViewData = viewData
            };
            Control control = vp.LoadControl(viewName);

            vp.Controls.Add(control);

            StringBuilder sb = new StringBuilder();

            using (StringWriter sw = new StringWriter(sb))
            {
                using (HtmlTextWriter tw = new HtmlTextWriter(sw))
                {
                    vp.RenderControl(tw);
                }
            }

            return(sb.ToString());
        }
コード例 #8
0
        public static string RenderPartialToString(string controlName, object viewData)
        {
            ViewDataDictionary vd = new ViewDataDictionary(viewData);
            ViewPage           vp = new ViewPage {
                ViewData = vd
            };
            Control control = vp.LoadControl(controlName);

            vp.Controls.Add(control);

            StringBuilder sb = new StringBuilder();

            using (StringWriter sw = new StringWriter(sb))
            {
                using (HtmlTextWriter tw = new HtmlTextWriter(sw))
                {
                    vp.RenderControl(tw);
                }
            }

            return(sb.ToString());
        }
コード例 #9
0
ファイル: MVC.cs プロジェクト: yanh19930226/yunExpress
        public static string RenderPartialToString(string file, object view)
        {
            ViewDataDictionary vd       = new ViewDataDictionary(view);
            ViewPage           viewPage = new ViewPage {
                ViewData = vd
            };
            Control control = viewPage.LoadControl(file);

            viewPage.Controls.Add(control);

            StringBuilder str = new StringBuilder();

            using (StringWriter stringWriter = new StringWriter(str))
            {
                using (HtmlTextWriter htmlTextWriter = new HtmlTextWriter(stringWriter))
                {
                    viewPage.RenderControl(htmlTextWriter);
                }
            }

            return(str.ToString());
        }
コード例 #10
0
        private static string renderPluginTemplate(PluginTemplate pluginTemplate, ResultExecutedContext context, string partialView, int index)
        {
            ViewPage viewPage = new ViewPage()
            {
                ViewContext = new ViewContext(context, ((ViewResult)context.Result).View, context.Controller.ViewData, context.Controller.TempData), ViewData = context.Controller.ViewData
            };
            StringBuilder sb = new StringBuilder();

            viewPage.InitHelpers();

            //TODO: (erikpo) Change the current model to be wrapped by a PluginViewModel to strongly type things like the plugin and its extended properties
            viewPage.ViewData.Model     = getModel(context, partialView, index);
            viewPage.ViewData["Plugin"] = pluginTemplate.Plugin;
            viewPage.ViewData["Index"]  = index;
            viewPage.Controls.Add(viewPage.LoadControl(string.Format("{0}/{1}.ascx", pluginTemplate.Plugin.Container.GetTemplatesPath(), pluginTemplate.TemplateName)));

            using (StringWriter sw = new StringWriter(sb))
                using (HtmlTextWriter tw = new HtmlTextWriter(sw))
                    viewPage.RenderControl(tw);

            return(sb.ToString());
        }
コード例 #11
0
ファイル: AuthHelper.cs プロジェクト: robperson/AssessTrack
        public static string RenderPartialToString(this HtmlHelper html, string controlName, object model)
        {
            ViewDataDictionary vd = new ViewDataDictionary(html.ViewData);
            vd.Model = model;
            ViewPage vp = new ViewPage { ViewData = vd, ViewContext = html.ViewContext };
            Control control = vp.LoadControl(controlName);

            vp.Controls.Add(control);

            StringBuilder sb = new StringBuilder();
            using (StringWriter sw = new StringWriter(sb))
            {
                using (HtmlTextWriter tw = new HtmlTextWriter(sw))
                {
                    vp.RenderControl(tw);
                }
            }

            return sb.ToString();
        }