标记没什么好看的:
<hr />
Add... <asp:Button ID="buttonTextSegment" runat="server" Text="Text Segment"
onclick="buttonTextSegment_Click" />
<hr />
或代码:
protected void buttonTextSegment_Click(object sender, EventArgs e)
{
//never is triggered
}
我的猜测是,这是由于层次结构/加载顺序:
英文:在页面的Load中,它添加了一个用户控件。在该用户控件内部,在Page_LoadComplete内(这是问题!?),它添加了另一个用户控件,它是包含标记按钮的最里面的用户控件。
伪视觉:页面 - &gt; Page_Load:动态添加用户控件 - &gt; Page_LoadComplete:另一个动态添加的用户控件 - &gt;用户控制标记:带事件的按钮。
在LoadComplete之前是否需要挂钩事件? (有没有办法让事件仍然有效,即使在LoadComplete中添加了控件?)
答案 0 :(得分:0)
您应该按此顺序创建用户控件 - &gt; Page_Init:动态添加用户控件 - &gt; Page_Init:另一个动态添加的用户控件 - &gt;用户控制标记。
如果在Page_Load或Page_LoadComplete函数中执行它们,则它们对于事件处理程序创建得太晚,因为事件处理程序在LoadControlState事件之后直接触发 - 这发生在Page_Init和Page_Load事件之间。