using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Configuration; using System.Web.Mvc; using System.IO; using System.Data; using System.Text; using System.Web.Mvc.Html; using iTextSharp.text; using iTextSharp.text.pdf; namespace sbcLabSystem.Controllers { public class HtmlViewRenderer { public string RenderViewToString(Controller controller, string viewName, object viewData) { var renderedView = new StringBuilder(); using (var responseWriter = new StringWriter(renderedView)) { var fakeResponse = new HttpResponse(responseWriter); var fakeContext = new HttpContext(HttpContext.Current.Request, fakeResponse); var fakeControllerContext = new ControllerContext(new HttpContextWrapper(fakeContext), controller.ControllerContext.RouteData, controller.ControllerContext.Controller); var oldContext = HttpContext.Current; HttpContext.Current = fakeContext; using (var viewPage = new ViewPage()) { var html = new HtmlHelper(CreateViewContext(responseWriter, fakeControllerContext), viewPage); html.RenderPartial(viewName, viewData); HttpContext.Current = oldContext; } } return renderedView.ToString(); } private static ViewContext CreateViewContext(TextWriter responseWriter, ControllerContext fakeControllerContext) { return new ViewContext(fakeControllerContext, new FakeView(), new ViewDataDictionary(), new TempDataDictionary(), responseWriter); } public class FakeView : IView { public void Render(ViewContext viewContext, TextWriter writer) { throw new NotImplementedException(); } } } }