Преобразование содержимого HtmlTextWriter в строку - PullRequest
8 голосов
/ 07 июня 2010

У меня есть сторонний инструмент, который создает тег img с помощью кода, используя методы HdermlTextWriter RenderBeginTag, RenderEndTag и AddAttribute. Я хочу получить полученный HTML-код в строку. Я попробовал метод отражения, упомянутый здесь , но я получаю ошибку "Невозможно привести объект типа 'System.Web.HttpWriter' к типу 'System.IO.StringWriter". Тип InnerWriter для HtmlTextWriter имеет тип HttpWriter.

Есть идеи, как скопировать выходной HTML в строку?

Добавление: код от стороннего контроля

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?

  }

Ответы [ 2 ]

11 голосов
/ 07 июня 2010
StringWriter w = new StringWriter();
HtmlTextWriter h = new HtmlTextWriter(w);

ctl.RenderControl(h);

return w.ToString();

Очевидно, вы должны правильно закрыть соединения. Но это примерно так; Я сделал это для модульного тестирования, но я извиняюсь, у меня нет точного кода передо мной в данный момент.

НТН.

3 голосов
/ 08 июня 2010

Это должно работать для вас:

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

        string html = output.InnerWriter.ToString();

Надеюсь, это поможет.

...