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?
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.