2010-06-07 13 views
6

Ho uno strumento di terze parti che crea un tag img tramite codice utilizzando i metodi RenderBeginTag, RenderEndTag & AddAttribute di HtmlTextWriter. Voglio ottenere l'HTML risultante in una stringa. Ho provato il metodo di riflessione menzionato here ma ottengo un errore "Impossibile eseguire il cast dell'oggetto di tipo" System.Web.HttpWriter "per digitare" System.IO.StringWriter ". Il tipo InnerWriter di HtmlTextWriter è di tipo HttpWriter.Conversione di contenuto di HtmlTextWriter in una stringa

Qualche idea su come copiare l'html di output in una stringa?

Aggiunta: codice di dal controllo di terze parti

protected override void Render(HtmlTextWriter output) 
    { 
    ..... 
    output.AddAttribute(HtmlTextWriterAttribute.Src, src); 
    output.RenderBeginTag(HtmlTextWriterTag.Img); 
    output.RenderEndTag(); 
       <-- What is the HTML now? Maybe look in OnPreRenderComplete event? 

    } 
+0

Da cosa proviene 'HtmlTextWriter'? – SLaks

+0

Viene passato all'evento di rendering sottoposto a override del controllo di terze parti. –

risposta

9
StringWriter w = new StringWriter(); 
HtmlTextWriter h = new HtmlTextWriter(w); 

ctl.RenderControl(h); 

return w.ToString(); 

Ovviamente, è arrivata a chiudere le connessioni in modo corretto. Ma è all'incirca questo; L'ho fatto per i test unitari, ma mi scuso, non ho il codice esatto di fronte a me al momento.

HTH.

+0

Non ho alcun controllo. È solo un tag img creato nel codice. Alla ricerca di soluzioni a partire da un HtmlTextWriter esistente che utilizza un HttpWriter. –

+0

Ok, potresti inserire del codice su come stai lavorando con HttpWriter o HtmlTextWriter, quindi posso consigliarti meglio? –

+0

Vedere la mia aggiunta nella domanda. –

3

Questo dovrebbe funzionare per voi:

 output.AddAttribute(HtmlTextWriterAttribute.Src, src); 
     output.RenderBeginTag(HtmlTextWriterTag.Img); 
     output.RenderEndTag(); 

     string html = output.InnerWriter.ToString(); 

Spero che questo aiuti.

+6

Questo dovrebbe contenere il tipo che è HttpWriter. –

+1

Hmm ... funziona abbastanza bene per me. http://img405.imageshack.us/img405/1568/57208217.png – philipproplesch

+0

Funziona solo se hai creato HtmlWriter yourserlf e passato StringWriter. Qui stai chiamando StringWriter.ToString(). –

Problemi correlati