You are currently viewing Convert MVC View to String without Rendering with HTTP Client

Convert MVC View to String without Rendering with HTTP Client

This answer is not on my way . This is originally from https://stackoverflow.com/a/2759898/2318354but here I have show the way to use it with “Static” Keyword to make it common for all Controllers .

For that you have to make static class in class file . (Suppose your Class File Name is Utils.cs )

This example is For Razor.

Utils.cs

public static class RazorViewToString
{
    public static string RenderRazorViewToString(this Controller controller, string viewName, object model)
    {
        controller.ViewData.Model = model;
        using (var sw = new StringWriter())
        {
            var viewResult = ViewEngines.Engines.FindPartialView(controller.ControllerContext, viewName);
            var viewContext = new ViewContext(controller.ControllerContext, viewResult.View, controller.ViewData, controller.TempData, sw);
            viewResult.View.Render(viewContext, sw);
            viewResult.ViewEngine.ReleaseView(controller.ControllerContext, viewResult.View);
            return sw.GetStringBuilder().ToString();
        }
    }
}

Now you can call this class from your controller by adding NameSpace in your Controller File as following way by passing “this” as parameter to Controller.

string result = RazorViewToString.RenderRazorViewToString(this ,"ViewName", model);

I hope this will be useful to you make code clean and neat.

 

Resources

https://stackoverflow.com/questions/483091/render-a-view-as-a-string

Tags: