I'm using ViewRenderer to write view result to a file like so:
public class WriteViewToFile
{
private DetailsController controller = ViewRenderer.CreateController<DetailsController>();
public void WriteDataToFile(ContextDB db, DataViewModel model, string fileName)
{
string html = ViewRenderer.RenderView("~/Views/Details/TemplateForData.cshtml", model, controller.ControllerContext);
File.WriteAllText(fileName, html);
// controller.dispose();
}
public void WriteOtherToFile(ContextDB db, OtherViewModel model, string fileName)
{
string html = ViewRenderer.RenderView("~/Views/Details/TemplateForOther.cshtml", model, controller.ControllerContext);
File.WriteAllText(fileName, html);
// controller.dispose();
}
}
Should I add controller.dispose() in the end or is this done automatically? if yes, is there a way to dispose of it after any of the methods are called?
You could separate that behavior into its own method:
Now your controller is being created, used, and then disposed.