/// <summary> /// Render view and Return The HTML Content /// </summary> /// <param name="controller">Controller</param> /// <param name="viewName">View name</param> /// <param name="model">Model</param> /// <param name="masterName">Master name</param> /// <param name="partialView">Whether is partial view</param> /// <returns>Return view string</returns> public static async Task <string> RenderViewContentAsync(this Controller controller, string viewName, object model, string masterName, bool partialView = false) { controller.ViewData.Model = model; using (var sw = new StringWriter()) { var actionContext = new ActionContext(controller.HttpContext, controller.RouteData, new ActionDescriptor()); if (partialView) { PartialViewResult partialViewResult = new PartialViewResult() { ViewData = controller.ViewData, TempData = controller.TempData, ViewName = viewName }; var partialViewExecutor = controller.HttpContext.RequestServices.GetRequiredService <IActionResultExecutor <PartialViewResult> >() as PartialViewResultExecutor; var pView = partialViewExecutor.FindView(actionContext, partialViewResult).View; var pviewContext = new ViewContext(actionContext, pView, partialViewResult.ViewData, partialViewResult.TempData, sw, new HtmlHelperOptions()); await pView.RenderAsync(pviewContext).ConfigureAwait(false); return(sw.GetStringBuilder().ToString()); } ViewResult viewResult = new ViewResult() { ViewData = controller.ViewData, TempData = controller.TempData, ViewName = viewName }; var viewExecutor = controller.HttpContext.RequestServices.GetRequiredService <ViewResultExecutor>(); var view = viewExecutor.FindView(actionContext, viewResult).View; var viewContext = new ViewContext(actionContext, view, viewResult.ViewData, viewResult.TempData, sw, new HtmlHelperOptions()); await view.RenderAsync(viewContext).ConfigureAwait(false); return(sw.GetStringBuilder().ToString()); } }