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 に答える