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()); }
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()); }
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()); }
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(); }
/// <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()); }
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(); }
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()); }
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()); }
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()); }
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()); }
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(); }