Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 263
Frank Rosario Avatar asked Nov 06 '22 15:11

Frank Rosario


1 Answers

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.

like image 83
Frank Rosario Avatar answered Nov 14 '22 22:11

Frank Rosario