0

IHttpHandlerを実装するクラスを作成しましたが、作成したデータバインドされたユーザーコントロールのレンダリングされたHTMLを返すために必要です。これを機能させることはできますが、期待どおりに機能しません...基本的に、新しいPage()を作成し、それにリピーターを追加して、そのリピーターのアイテムテンプレートをユーザーコントロールに設定します。 (.ascx)、データソースを設定してから、データバインドします。最後に、レンダリングするように依頼し、そのHTMLを収集して、パイプに送り返します。

問題は、ユーザーコントロールのコントロールのRender()メソッドのみが起動され、Init()、Load()などのイベントが起動されないことです。どうしてこれなの?そして、あなたが通常期待するように、どうすれば彼らを解雇させることができますか?

StringBuilder sb = new StringBuilder();
StringWriter tw = new StringWriter(sb);
HtmlTextWriter hw = new HtmlTextWriter(tw);

Page page = new Page();
Repeater rpt = new Repeater();

page.Controls.Add(rpt);

rpt.ItemTemplate = ResourceServices.LoadTemplate("mytemplate.ascx");
rpt.DataSource = datasource;
rpt.DataBind();

rpt.RenderControl(hw);

HTML = sb.ToString();
4

1 に答える 1

1

イベントを発生させるには、ページを実行する必要があります。RenderControl行を次のように置き換えてみてください。

context.Server.Execute(page, hw, false);

http://msdn.microsoft.com/en-us/library/ms150027.aspx

于 2012-11-06T13:09:46.210 に答える