2010-06-07 19 views
6

Mam narzędzie innej firmy, które tworzy znacznik img za pośrednictwem kodu przy użyciu metod RenderBeginTag, RenderEndTag & AddAttribute RtmlTextWriter. Chcę, aby wynikowy kod HTML stał się ciągiem znaków. Wypróbowałem metodę refleksji wspomnianą here, ale pojawia się błąd "Nie można odlać obiektu typu" System.Web.HttpWriter ", aby wpisać" System.IO.StringWriter ". Typ InnerWriter w HtmlTextWriter jest typu HttpWriter.Konwertowanie zawartości pliku HtmlTextWriter na ciąg znaków

Jakieś pomysły dotyczące kopiowania wyjściowego html na ciąg znaków?

Dodatek: kod spod kontroli cywilnej

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

Z czego pochodzi 'HtmlTextWriter'? – SLaks

+0

Jest przekazywany do przesłoniętego zdarzenia renderowania kontrolki zewnętrznej. –

Odpowiedz

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

ctl.RenderControl(h); 

return w.ToString(); 

Oczywiście, masz do zamknięcia połączenia poprawnie. Ale jest to mniej więcej tak; Zrobiłem to dla testów jednostkowych, ale przepraszam, nie mam w tej chwili dokładnego kodu.

HTH.

+0

Nie mam żadnych kontroli. To tylko tag img stworzony w kodzie. Poszukuję rozwiązania zaczynającego się od istniejącego HtmlTextWriter, który używa HttpWriter. –

+0

Ok., Czy mógłbyś napisać jakiś kod o tym, jak pracujesz z HttpWriter lub HtmlTextWriter, więc mogę lepiej doradzić? –

+0

Zobacz mój dodatek w pytaniu. –

3

ten powinien pracować dla Ciebie:

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

     string html = output.InnerWriter.ToString(); 

Nadzieja to pomaga.

+6

Powołałoby to typ HttpWriter. –

+1

Hmm ... działa mi całkiem nieźle. http://img405.imageshack.us/img405/1568/57208217.png – philipproplesch

+0

Działa to tylko wtedy, gdy utworzyłeś plik HtmlWriter yourserlf i przekazałeś do niego StringWriter. Tutaj dzwonisz do StringWriter.ToString(). –

Powiązane problemy