2010-01-19 36 views
0

假设您的Web表单中有一个Button,并且OnClick绑定了一个代码隐藏事件。将控件移到主分页符事件绑定中吗?

然后,通过将该按钮添加到母版页的控件的控件集合中,将该按钮向上移动到母版页中。 这是在运行时在Page_Load事件中完成的。

OnClick事件现在绑定到哪里?仍然是Web表单的代码隐藏,还是查看母版页的代码隐藏?

我这样做了,现在我的按钮什么也没做。它将页面发回,但实际上并没有在代码隐藏中运行绑定事件。

我在两种情况下都检查了按钮的HTML。那唯一改变的是标识和名称,以反映命名容器的变化:

在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还是名称?如果是这样,我将它移动到母版页中是否会打破此绑定?

+0

你是说呈现的HTML缺少JavaScript?是不是应该在那里调用__doPostBack(eventTarget,eventArgument)? – Josh 2010-01-19 19:02:47

+0

那就是那里呈现的HTML,所以如果它不在那里,它就不会呈现。这就是让我认为事件处理程序在控件移动时断开连接的原因。 – Deane 2010-01-22 22:15:50

回答

0

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

双击母版页上的按钮,它应该连接事件。如果你有严重的事件处理,你会发现许多有趣的东西太:)

+0

你误解了。上面的HTML是页面上的*渲染* HTML。而且我无法点击母版页中的按钮,因为它被移动到* Page_Load事件中的母版页。它从Web表单开始,绑定很好。 – Deane 2010-01-19 17:01:33

+0

哦。在生成主控制器上的按钮的过程中,是否有机会通过代码隐藏连接类似的事件? IE:Button.onclick = originalButtonmethod_click() – 2010-01-25 15:21:37

0

如果控制是在母版页,发动机将寻找背后的母版页的代码的事件处理程序。事件处理程序需要或者是

a。在与它们定义相同的范围内声明,或

b。以编程方式分配。

+0

Web窗体中的控件*启动*。它在Page_Load期间被移到主页面。那么,它的范围是什么? – Deane 2010-01-19 17:02:17

+0

您不清楚按钮何时以及如何移动。你还没有提到如何分配事件处理程序。 – 2010-01-19 22:33:54

+0

对不起 - 我编辑了我的帖子,以表明它在运行时被移动。事件处理程序通过Web表单中控件元素中的OnClick属性进行分配。 – Deane 2010-01-22 22:15:07

0

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

你说,你的Page_Load,这恰好回传数据处理后,在移动控制,但在此之前回发更改通知和处理程序被解雇。

Control Execution Lifecycle Reference

而且this说,这是在回发处理事项UniqueID,但我不知道有关事件。