tags:

views:

487

answers:

2

I'm writing a simple CMS.

I want to be able to load a View, having it included inside a master page, and then scan the HTML so that I can replace some custom tags (like {{blog}} with my own blog output) and then serve it up to the browser.

How can I get access to the HTML from the ViewResult in order to intercept it?

+1  A: 

Sounds like you want to write an ActionFilterAttribute. This attribute has the following methods:

  • OnActionExecuting - called just before the decorated action is executed
  • OnActionExecuted - called after the action method is called, but before the ActionResult is rendered.
  • OnResultExecuting - callled before the result is rendered
  • OnResultExecuted - called after the result is rendered

There is an example here which returns either JSON or XML data depending on the "Content-type" header: Create REST API using ASP.NET MVC that speaks both Json and plain Xml

Aydsman
A: 

That's going to be tricky because the ViewResult writes its response directly to the Response.Stream. So you'll probably have to deal with the Response.Filter property to output the ViewResult to a MemoryStream so you can manipulate the content before returning a ContentResult. All this would happen in OnResultExecuting probably.

Haacked
Sorry, my initial question lead us down the garden path. I really just awnt to be able to do some replacement on tags in the View and serve that up. I was being presumptuous in returning a ContentResult.
jmcd