У меня есть сторонний инструмент, который создает тег img через HtmlTextWriter использования кода методы RenderBeginTag, RenderEndTag & AddAttribute. Я хочу получить получающийся HTML в строку. Я попробовал отражательный метод, упомянутый здесь, но я получаю ошибку, "Не могущую бросать объект типа 'Система. Сеть. HttpWriter' для ввода 'Системы. 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?
}
StringWriter w = new StringWriter();
HtmlTextWriter h = new HtmlTextWriter(w);
ctl.RenderControl(h);
return w.ToString();
Очевидно, вы должны правильно закрыть соединения. Но это примерно так; Я сделал это для модульного тестирования, но прошу прощения, у меня сейчас нет точного кода.
HTH.
Это должно сработать для вас:
output.AddAttribute(HtmlTextWriterAttribute.Src, src);
output.RenderBeginTag(HtmlTextWriterTag.Img);
output.RenderEndTag();
string html = output.InnerWriter.ToString();
Надеюсь, это поможет.