I am using the answer here (https://stackoverflow.com/a/2759898) to render view as string.
I am new to async await thing. Just need to know if the following code will actually release the resources until the view is rendered? Just assume that my view will take 5 seconds to render.
public async Task<string> RenderViewToString(string viewName, object model)
{
ViewData.Model = model;
using (var sw = new StringWriter())
{
return await Task.Run(() =>
{
var razor = new RazorViewEngine();
var viewResult = razor.FindView(ControllerContext, viewName, null, false);
var viewContext = new ViewContext(ControllerContext, viewResult.View,
ViewData, TempData, sw);
viewResult.View.Render(viewContext, sw);
viewResult.ViewEngine.ReleaseView(ControllerContext, viewResult.View);
return sw.GetStringBuilder().ToString();
});
}
}
P.S. Don't ask me why my views would take time to render. Although it is not a recommended practice BUT for this particular instance I have to call few web services in a view and create json output.