8

我有一个第三方工具,它使用 HtmlTextWriter 的 RenderBeginTag、RenderEndTag 和 AddAttribute 方法通过代码创建一个 img 标签。我想将生成的 HTML 转换为字符串。我尝试了此处提到的反射方法,但出现错误“无法将'System.Web.HttpWriter'类型的对象转换为'System.IO.StringWriter'类型”。HtmlTextWriter 的 InnerWriter 类型是 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?

  }
4

2 回答 2

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

ctl.RenderControl(h);

return w.ToString();

显然,您必须正确关闭连接。但大致是这样的;我这样做是为了进行单元测试,但我很抱歉,目前我面前没有确切的代码。

HTH。

于 2010-06-07T18:29:21.307 回答
3

这应该适合你:

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

        string html = output.InnerWriter.ToString();

希望这可以帮助。

于 2010-06-08T14:09:53.600 回答