2010-06-07 14 views
6

Tengo una herramienta de terceros que crea una etiqueta img a través del código utilizando RenderBeginTag, RenderEndTag & métodos AddAttribute de HtmlTextWriter. Quiero obtener el HTML resultante en una cadena. Probé el método de reflexión mencionado here pero me sale un error "No se puede convertir el objeto de tipo 'System.Web.HttpWriter' para escribir 'System.IO.StringWriter'. El tipo InnerWriter del HtmlTextWriter es del tipo HttpWriter.Conversión de contenidos de HtmlTextWriter a una cadena

¿Alguna idea sobre cómo copiar el html de salida en una cadena?

Adición: código de acceso no autorizado al

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

¿De qué viene el 'HtmlTextWriter'? – SLaks

+0

Se pasa al evento de representación anulado del control de terceros. –

Respuesta

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

ctl.RenderControl(h); 

return w.ToString(); 

Obviamente, tienes que cerrar las conexiones correctamente. Pero es más o menos esto; Hice esto para pruebas unitarias, pero me disculpo, no tengo el código exacto frente a mí en este momento.

HTH.

+0

No tengo ningún control. Es solo una etiqueta img creada en código. Buscando solución a partir de un HtmlTextWriter existente que utiliza un HttpWriter. –

+0

Bien, entonces, ¿podría publicar algún código sobre cómo está trabajando con HttpWriter o HtmlTextWriter, así que puedo aconsejarlo mejor? –

+0

Ver mi adición en la pregunta. –

3

Esto debería funcionar para usted:

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

     string html = output.InnerWriter.ToString(); 

Espero que esto ayude.

+6

Esto mantendría el tipo que es HttpWriter. –

+1

Hmm ... funciona bastante bien para mí. http://img405.imageshack.us/img405/1568/57208217.png – philipproplesch

+0

Esto funciona solo si usted creó HtmlWriter yourserlf y le pasó StringWriter. Aquí está llamando a StringWriter.ToString(). –

Cuestiones relacionadas