Search code examples
c#.netasp.net-mvcviewrendering

Rendering a view to a string in ASP.NET MVC 2


We need to render an ActionResult to a string to add pages to our internal search engine index. We settled on this solution to render to string.

I've run into a problem with the ExecuteResult call used to process the View.

Code Snippet:

var oldController = controllerContext.RouteData.Values["controller"];
controllerContext.RouteData.Values["controller"] = 
                  typeof(TController).Name.Replace("Controller", "");

viewResult.ExecuteResult(controllerContext); // this line breaks

I receive the following error:

"Object reference not set to instance of object" error.

I've confirmed viewResult is not null, so the exception has to be thrown internally in ExecuteResult.

What could we be missing?


Solution

  • I figured it out. The issue with ExecuteResult wasn't working as expected was because I hadn't mocked the ControllerContext properly. I was able to solve the issue by mocking the controllercontext as described in this SO post:

    Mocking Asp.net-mvc Controller Context

    Hope this post helps someone in the future if they're trying to do something similar.