静态脚本方法中的LoadControl不遵守页面生命周期(未引发Init事件)

本文关键字:周期 事件 Init 生命 方法 脚本 LoadControl 不遵守 静态 | 更新日期: 2023-09-27 17:58:36

我使用的是从Javascript调用的ScriptMethod。在这个方法中,我尝试使用LoadControl以编程方式获得一个控件。

我将此控件添加到当前的IHttpHandlerHttpContext.Current.Handler),它是Page的一个实例,也包含我的(静态)ScriptMethod。在这个实例中,我添加了使用LoadControl加载的控件,但是我的控件的Init事件从未引发。

在遵守页面生命周期的同时,是否可以在ScriptMethod中使用LoadControl

静态脚本方法中的LoadControl不遵守页面生命周期(未引发Init事件)

您需要执行包含控件的页面,以激发相关事件:

static void RenderControlTo(string pathToControl, TextWriter writer)
{
   var page = new Page();
   var control = page.LoadControl(pathToControl);
   page.Controls.Add(control);
   HttpContext.Current.Server.Execute(page, writer, false);
}