#if !NET8 using System.Web; using System.Web.Mvc; using System.Web.Mvc.Html; using System.Web.Security; #endif #if NET8 using Microsoft.AspNetCore.Mvc; #endif #if !NET8 using System; using System.IO; using System.Collections.Generic; using System.Net; using System.Net.Http; using System.Security.Claims; using System.Threading.Tasks; #endif using System.Text; namespace Fab2ApprovalSystem.PdfGenerator; public class HtmlViewRenderer { public string RenderViewToString(Controller controller, string viewName, object viewData) { StringBuilder renderedView = new(); #if !NET8 using (StringWriter responseWriter = new(renderedView)) { HttpResponse fakeResponse = new(responseWriter); HttpContext fakeContext = new(HttpContext.Current.Request, fakeResponse); ControllerContext fakeControllerContext = new(new HttpContextWrapper(fakeContext), controller.ControllerContext.RouteData, controller.ControllerContext.Controller); var oldContext = HttpContext.Current; HttpContext.Current = fakeContext; using (var viewPage = new ViewPage()) { HtmlHelper html = new HtmlHelper(CreateViewContext(responseWriter, fakeControllerContext), viewPage); html.RenderPartial(viewName, viewData); HttpContext.Current = oldContext; } } #endif return renderedView.ToString(); } #if !NET8 private static ViewContext CreateViewContext(TextWriter responseWriter, ControllerContext fakeControllerContext) { return new ViewContext(fakeControllerContext, new FakeView(), new ViewDataDictionary(), new TempDataDictionary(), responseWriter); } #endif }