Asp.net 处理动态加载的用户控件中的按钮单击事件

Asp.net 处理动态加载的用户控件中的按钮单击事件,asp.net,event-handling,dynamic,loadcontrol,Asp.net,Event Handling,Dynamic,Loadcontrol,我有一个空白的用户控件子项,在页面加载期间,我创建了一些文本框和一个按钮。我还向按钮添加了一个事件 然后,我从另一个usercontrol父级中的占位符动态加载该用户控件。 两个控件都正确呈现,但当我单击按钮时,事件未被激发。 关于如何处理这件事有什么想法吗 子代码: protected void Page_Load(object sender, EventArgs e) { /*... other user controls ..*/ UpdateButton = n

我有一个空白的用户控件子项,在页面加载期间,我创建了一些文本框和一个按钮。我还向按钮添加了一个事件

然后,我从另一个usercontrol父级中的占位符动态加载该用户控件。 两个控件都正确呈现,但当我单击按钮时,事件未被激发。 关于如何处理这件事有什么想法吗

子代码:

 protected void Page_Load(object sender, EventArgs e)
{    
    /*... other user controls ..*/
    UpdateButton = new LinkButton();
    UpdateButton.ID = "buttonid";
    UpdateButton.Text = "text";
    UpdateButton.Click += new EventHandler(UpdateButton_Click);
    this.Controls.Add(UpdateButton);
}

protected override void Render(HtmlTextWriter writer)
{
    for (int i = 0; i < this.Controls.Count; i++)
    {
        this.Controls[i].RenderControl(writer);
    }
}

public void UpdateButton_Click(object sender, EventArgs e)
{
    //Do stuff
}
如果我在没有父控件的情况下直接使用子控件,则会很好地引发和处理单击事件。但是当我使用父控件时,调试器甚至不会在UpdateButton_Click中点击断点


提前谢谢。

我想我知道可能会发生什么。在父页面中,您正在调用placeholder.Controls.Clear;这将执行您想象的操作并清除控件,包括已发生的任何事件。删除此行时会发生什么情况?每次回发时是否会创建一个附加的回发?

使用父级和子级时,子级的页面加载是否正确执行?是的,确实如此。子控件中的所有控件文本框、按钮、标签都正确呈现,并且子控件正常工作。我删除了该行,每次回发仅获得一个子控件,但仍然无法捕获事件。
protected void Page_Load(object sender, EventArgs e)
{    
    placeholder.Controls.Clear();
    ChildControl uc = (ChildControl)LoadControl("~/UserControls/ChildControl.ascx");
    placeholder.Controls.Add(uc);
}