public static string RenderViewToString(string controllerName, string viewName, object viewData, List<KeyValuePair<string, object>> additionalData) { var context = HttpContext.Current; var contextBase = new HttpContextWrapper(context); var routeData = new RouteData(); routeData.Values.Add("controller", controllerName); var controllerContext = new ControllerContext(contextBase, routeData, new EmptyController()); var razorViewEngine = new RazorViewEngine(); var razorViewResult = razorViewEngine.FindView(controllerContext, viewName, "", false); ViewDataDictionary vdd = new ViewDataDictionary(viewData); if (additionalData != null && additionalData.Any()) additionalData.ForEach(vdd.Add); var writer = new StringWriter(); var viewContext = new ViewContext(controllerContext, razorViewResult.View, vdd, new TempDataDictionary(), writer); razorViewResult.View.Render(viewContext, writer); return writer.ToString(); }
public static string RenderViewToString(ControllerContext ct, string viewName, object viewData) { var razorViewEngine = new RazorViewEngine(); var razorViewResult = razorViewEngine.FindView(ct, viewName, "", false); var writer = new StringWriter(); var viewContext = new ViewContext(ct, razorViewResult.View, new ViewDataDictionary(viewData), new TempDataDictionary(), writer); razorViewResult.View.Render(viewContext, writer); return writer.ToString(); }
protected string RenderViewToString(string controllerName, string viewName, object viewData) { using (var writer = new StringWriter()) { var routeData = new RouteData(); routeData.Values.Add("controller", controllerName); var razorViewEngine = new RazorViewEngine(); var razorViewResult = razorViewEngine.FindView(ControllerContext, viewName, "", false); var viewContext = new ViewContext(ControllerContext, razorViewResult.View, new ViewDataDictionary(viewData), new TempDataDictionary(), writer); razorViewResult.View.Render(viewContext, writer); return writer.ToString(); } }
public static string RenderViewToString(string controllerName, string viewName, object viewData) { using (var writer = new StringWriter()) { var routeData = new RouteData(); routeData.Values.Add("controller", controllerName); var fakeControllerContext = new ControllerContext(new HttpContextWrapper(new HttpContext(new HttpRequest(null, "http://google.com", null), new HttpResponse(null))), routeData, new FakeController()); var razorViewEngine = new RazorViewEngine(); var razorViewResult = razorViewEngine.FindView(fakeControllerContext, viewName, "", false); var viewContext = new ViewContext(fakeControllerContext, razorViewResult.View, new ViewDataDictionary(viewData), new TempDataDictionary(), writer); razorViewResult.View.Render(viewContext, writer); return writer.ToString(); } }
//http://wouterdekort.blogspot.co.uk/2012/10/rendering-aspnet-mvc-view-to-string-in.html public static string RenderViewToString(ComplianceReviewReportViewModel viewData) { var controllerName = "Document"; var viewName = "ActionPlan"; var context = HttpContext.Current; var contextBase = new HttpContextWrapper(context); var routeData = new RouteData(); routeData.Values.Add("controller", controllerName); var controllerContext = new ControllerContext(contextBase, routeData, new DocumentController()); var razorViewEngine = new RazorViewEngine(); var razorViewResult = razorViewEngine.FindView(controllerContext, viewName, "", false); var writer = new StringWriter(); var viewContext = new ViewContext(controllerContext, razorViewResult.View, new ViewDataDictionary(viewData), new TempDataDictionary(), writer); razorViewResult.View.Render(viewContext, writer); return writer.ToString(); }
internal static string RenderViewToString(string controllerName, string viewName, ViewDataDictionary viewData, bool partial = false) { var context = HttpContext.Current; var contextBase = new HttpContextWrapper(context); var routeData = new RouteData(); routeData.Values.Add("controller", controllerName); var controllerContext = new ControllerContext(contextBase, routeData, new EmptyController()); var razorViewEngine = new RazorViewEngine(); ViewEngineResult razorViewResult = null; if (partial) { razorViewResult = razorViewEngine.FindPartialView(controllerContext, viewName, false); } else { razorViewResult = razorViewEngine.FindView(controllerContext, viewName, "", false); } var writer = new StringWriter(); var viewContext = new ViewContext(controllerContext, razorViewResult.View, viewData, new TempDataDictionary(), writer); razorViewResult.View.Render(viewContext, writer); return writer.ToString(); }