I want to extend the WebFormViewEngine so that I can perform some post-processing - I want it to do it's stuff, then hand me the Html back, so I can do put some final touches to it. It needs to be done as a View/ViewEngine because I need access to the ViewData.
Unfortunately there seems to be no way to get the Html back from the WebFormView, and no way to hand a custom HtmlTextWriter to the WebFormView or ViewPage.
Surely there's a way to do this? No?
Littlecharva
You can use Action Filters to do this. Check out this tutorial at asp.net/mvc. You want to use a ResultsFilter.
As an alternate, you can override the virtual OnResultExecuted method of the Controller.
Okay, I have never done this before but I looked through reflector and the MVC assemblies. It appears as though you it might be possible to extend the ViewPage and the ViewPage and the ViewMasterPage object with your object. The in your own object you can override the render method and get a handle tot the HtmlTextWriter. Then just pass it on to the base and let it do it's thing. Something like this (this is un-tested and is only theoretical, there may be more methods you need to override.) I recommend using reflector to see how it is done now and even how other view engines like Spark do it.
You can capture output recevier before the View gets rendered by overriding Render method of the WebFormView class. The trick is that the output receiver is not the System.IO.TextWriter writer but the Writer property of the viewContext. Also, you have to extend WebFormViewEngine to return your views.