カスタム ユーザー コントロールを開発します。特定のニーズのために、その内部のユーザーコントロールから生成されたhtmlを取得し、それのみをページの本文に表示する必要があります。
RenderControl(HtmlTextWriter writer) をオーバーロードすることは可能だと思いますが、方法がわかりません。
ありがとう
カスタム ユーザー コントロールを開発します。特定のニーズのために、その内部のユーザーコントロールから生成されたhtmlを取得し、それのみをページの本文に表示する必要があります。
RenderControl(HtmlTextWriter writer) をオーバーロードすることは可能だと思いますが、方法がわかりません。
ありがとう
コントロールをメモリにレンダリングし、文字列に配置して、この文字列をページのどこかに印刷することができます。これは、コントロールをロードしてメモリにレンダリングし、結果を文字列に出力するコードです。
// 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);
}
レンダリングをコントロールクラス内に配置します。