Perhaps I'm going about this all wrong (and please tell me if I am), but I'm hitting my head against a wall with something that seems like a really simple concept.
This Render override is coming from a User Control.
protected override void Render(HtmlTextWriter writer)
{
string htmlAboutToBeRendered = writer.GetWhatHasBeenWrittenToTheWriterSoFar();
// Do something nefarious, yet unrelated with htmlAboutToBeRendered
}
This seems like a there would be an obvious way to do this, but I can't seem to find it.
Can anyone shed some light on this for me, please?
Try this:
protected override void RenderContents(HtmlTextWriter output)
{
StringBuilder sb = new StringBuilder();
HtmlTextWriter htw = new HtmlTextWriter(new System.IO.StringWriter(sb,
System.Globalization.CultureInfo.InvariantCulture));
foreach (Control ctrl in Controls)
{
ctrl.RenderControl(htw);
}
string strContents = sb.ToString();
}
You can derive from HttpTextWriter and override OnTagRender, OnAttributeRender and OnStyleRender methods and modify the tags as they are rendered. The MSDN docs for OnTagRender show a sample where the tag is modified during rendering:
http://msdn.microsoft.com/en-us/library/system.web.ui.htmltextwriter.ontagrender.aspx
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With