1

カスタム ユーザー コントロールを開発します。特定のニーズのために、その内部のユーザーコントロールから生成されたhtmlを取得し、それのみをページの本文に表示する必要があります。

RenderControl(HtmlTextWriter writer) をオーバーロードすることは可能だと思いますが、方法がわかりません。

ありがとう

4

1 に答える 1

2

コントロールをメモリにレンダリングし、文字列に配置して、この文字列をページのどこかに印刷することができます。これは、コントロールをロードしてメモリにレンダリングし、結果を文字列に出力するコードです。

    // load the control
    var oTesto = Page.LoadControl("Testo.ascx");

    // here you need to run some initialization of your control
    //  because the page_load is not loading now.

    // a string writer to write on it
    using(TextWriter stringWriter = new StringWriter())
    {
      // a html writer
      using(HtmlTextWriter GrapseMesaMou = new HtmlTextWriter(stringWriter))
      {
        // now render the control inside the htm writer
        oTesto.RenderControl(GrapseMesaMou);

        // here is your control rendered output.
        strBuild = stringWriter.ToString();
      }
    }

コントロールのレンダリングをキャプチャするには、次のようにレンダリングを使用できます

protected override void Render(HtmlTextWriter writer)
{
    System.IO.StringWriter stringWriter = new System.IO.StringWriter();

    HtmlTextWriter htmlWriter = new HtmlTextWriter(stringWriter);

    // now the control is inside the htmlWriter as final rendered text
    base.Render(htmlWriter);

    // here is how to make the control render itself
    // base.Render(writer);
}

レンダリングをコントロールクラス内に配置します。

于 2012-08-03T08:03:51.330 に答える