渲染用户控制和火控事件

时间:2011-06-29 13:16:43

标签: c# .net user-controls

我正在尝试在代码中加载用户控件并将输出存储为字符串变量。目前我已经得到了以下代码:

StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);

WidgetControlBase widget = (WidgetControlBase)LoadControl("/controls/mycontrol.ascx");
widget.RenderControl(htw);

问题是RenderControl方法不会触发任何控件事件,因此我在控件Page_Load中添加的任何内容都不会发生。

我尝试在PlaceHolder中加载控件,然后像这样呈现PlaceHolder

StringWriter sw = new StringWriter();
HtmlTextWriter htw = new HtmlTextWriter(sw);

WidgetControlBase widget = (WidgetControlBase)LoadControl("/controls/mycontrol.ascx");

myPlaceholder.Controls.Add(widget);
myPlaceholder.RenderControl(htw);

然而,这似乎与在控件上直接使用RenderControl直接相同,它也不会触发任何事件。

有没有办法在仍然触发控件事件的同时获取包含控件内容的字符串?

1 个答案:

答案 0 :(得分:0)

我认为您正试图将控件呈现在页面生命周期中的错误点。尝试将代码从Page_Load移动到PreInit,如下所示:

    protected override void OnPreInit(EventArgs e)

 {
            //custom code            

           base.OnPreInit(e);
 }

有关页面生命周期的详细信息,请访问: http://www.codeasp.net/articles/asp.net/20/aspnet-page-lifecycle