渲染用户控制和消防控制事件

本文关键字:控制 事件 用户 | 更新日期: 2023-09-27 18:00:44

我试图在代码中加载一个用户控件,并将输出存储为字符串变量。目前我有以下代码:

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相同,它也不会激发任何事件。

有没有一种方法可以在触发控件事件的同时获得包含控件内容的字符串?

渲染用户控制和消防控制事件

我认为您试图在页面生命周期中的错误点呈现控件。尝试将代码从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