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

时间:2013-02-11 14:16:53

标签: c# asp.net webforms page-lifecycle

我正在使用从Javascript调用的ScriptMethod。在此方法中,我尝试使用LoadControl以编程方式获取控件。

我正在将此控件添加到当前IHttpHandlerHttpContext.Current.Handler),这是Page的一个实例,其中还包含我的(静态)ScriptMethod。对于这个实例,我添加了使用LoadControl加载的控件,但是我的控件的Init事件永远不会被引发。

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

1 个答案:

答案 0 :(得分:0)

您需要execute the page包含控件才能触发相关事件:

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);
}