ASP.NET中标记按钮事件未触发(内部详细信息)

时间:2010-09-01 19:04:00

标签: asp.net events user-controls button markup

标记没什么好看的:

<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中添加了控件?)

1 个答案:

答案 0 :(得分:0)

您应该按此顺序创建用户控件 - &gt; Page_Init:动态添加用户控件 - &gt; Page_Init:另一个动态添加的用户控件 - &gt;用户控制标记。

如果在Page_Load或Page_LoadComplete函数中执行它们,则它们对于事件处理程序创建得太晚,因为事件处理程序在LoadControlState事件之后直接触发 - 这发生在Page_Init和Page_Load事件之间。