Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

HtmlTextWriter to String - Am I overlooking something?

Tags:

c#

asp.net

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?

like image 812
Adam McKee Avatar asked Jun 17 '09 17:06

Adam McKee


2 Answers

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();  

}

like image 57
TheTXI Avatar answered Sep 20 '22 09:09

TheTXI


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

like image 26
Robert Horvick Avatar answered Sep 18 '22 09:09

Robert Horvick