假设您的Web表单中有一个Button,OnClick绑定到代码隐藏事件。
然后将该按钮添加到母版页中,方法是将其添加到母版页中控件的Controls集合中。 这是在运行时,在Page_Load事件中完成的。
现在绑定的OnClick事件在哪里?仍然是Web表单的代码隐藏,还是在主页的代码隐藏中查找?
我做到了这一点,现在我的按钮没有做任何事情。它会回发页面,但实际上并没有在代码隐藏中运行绑定事件。
我在两种情况下检查了按钮的HTML。唯一改变的是ID和名称,以反映命名容器的变化:
在Web表单中(“MainContent”是ContentPlaceholder):
<input type="submit" id="ctl00_MainContent_DeleteButton" value="Yes, Delete" name="ctl00$MainContent$DeleteButton"/>
在母版页中:
<input type="submit" id="ctl00_DeleteButton" value="Yes, Delete" name="ctl00$DeleteButton"/>
我已经运行了调试器并且可以确认它不再触及绑定事件。
是将ID绑定到事件的ID还是名称?如果是这样,我将它移入母版页是否会打破这种约束?
答案 0 :(得分:0)
将控件绑定到代码隐藏事件的是属性(例如:<asp:Button ... OnClick="btnSubmit_click"
&gt;),上面的示例中似乎缺少此属性。
双击母版页上的按钮,它应该连接事件。如果你认真对待事件处理,你会发现很多有趣的东西:)
答案 1 :(得分:0)
如果控件位于母版页中,引擎将在母版页后面的代码中查找事件处理程序。事件处理程序需要
一个。在与其定义相同的范围内声明,或
湾以编程方式分配。
答案 2 :(得分:0)
由于移动,您的控制执行生命周期可能会断开连接。
你说你在Page_Load期间移动控件,这在处理回发数据之后发生,但在回发更改通知和处理程序被触发之前发生。