0

假设您的 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 还是名称?如果是这样,我将其移至母版页会破坏此绑定吗?

4

3 回答 3

0

由于移动,您可能会在控制执行生命周期中断开连接。

您说您在 Page_Load 期间移动了控件,这发生在处理回发数据之后,但在回发更改通知和处理程序被触发之前。

控制执行生命周期参考

也表明在回发处理中重要的是唯一ID,但我不确定事件。

于 2010-01-19T19:23:01.330 回答
0

将控件绑定到代码隐藏事件的是一个属性(例如:<asp:Button ... OnClick="btnSubmit_click">),并且在上面的示例中似乎缺少此属性。

双击母版页上的按钮,它应该连接事件。如果你认真对待事件处理,你也会发现很多有趣的东西 :)

于 2010-01-19T16:45:43.673 回答
0

如果控件在母版页中,引擎将在母版页的代码中查找事件处理程序。事件处理程序需要要么

一个。在定义它们的同一范围内声明,或

湾。以编程方式分配。

于 2010-01-19T16:48:33.557 回答