繁体   English   中英

ASP.NET控件事件处理程序未在回发时触发?

[英]ASP.NET control event handler not firing on postback?

我有一个控件,该控件的ImageButton与OnClick事件相关联...单击此控件后,将执行回发,并且不会调用事件处理程序。 AutoEventWireup设置为true,并且我已经仔细检查了拼写等。...一年多来我们一直没有碰过此控件,直到几周前它一直工作良好。

我们已经对加载该控件的控件进行了更改...所以我想知道,我们可以进行哪些更改以阻止该事件处理程序被调用? 有大量的Java语言在进行,因此这也可能是罪魁祸首...

编辑:澄清一下...我们正在页面的OnLoad事件中动态加载ImageButton的父控件。

AutoEventWireup无关紧要。 您的ImageButton是否动态加载,即没有写成标记? 如果在页面生命周期的后期(例如在PreRender中)将其加载到页面上,则不会触发该事件。

如果出现JavaScript问题,则您的页面甚至都不会回发。 那是真的吗

您是否给ImageButton提供了ID?

我不同意BritishDeveloper所说的话。 我在动态加载控件时遇到了类似的问题,但是我无法使用Page.FindControl("controlName")引用该控件,有人指出我需要牢记页面生命周期。 我发现我需要确保将控件加载到PageInit中,因为在执行异步回发之后,该控件仍然存在,但未加载回发中,因此无法找到它。 虽然这些都在csharp codebehind和ajax中,但是我猜想控件没有被重新加载。

我可以再详细一点...我只花了几个小时来修复自己的问题,类似于此处描述的问题。 在创建一些搜索控件的过程中,我添加了一对ImageButton,并在它们上设置了PostbackUrl属性。 几天后,在测试新代码时,我注意到该网络表单上的其他按钮均未正确发布。 他们会触发回发,但是后面的代码的行为似乎是每个回发都是初始页面请求,并且没有事件处理程序在触发。

经过几个小时的故障排除,我发现了这篇文章。 当我返回并从这两个ImageButton中删除PostbackUrl时,一切恢复正常。 我不知道为什么会导致此问题,但是这里提到的修复程序对我有用。 我想补充一点,我的ImageButtons不是动态添加的……它们在标记中,并且这个问题仍然出现。 在您的标记中搜索设置了PostbackUrl的任何控件...删除该控件(如果需要,在其周围的程序)...查看事件处理程序是否将正确触发。

因此,事实证明,我们在控件A中的一个按钮上设置了PostbackUrl属性...这导致控件B的事件处理程序在按下控件B中的按钮时不会触发。

如果动态创建控件。 每当您使用新创建的控件触发回发时,都需要重新创建它。 只需认为您的应用程序正在服务器上运行即可。 服务器如何保存有关动态创建的控件的信息? 不要使用Page.IsPostBack创建回发。 PostbackUrl是错误的解决方案。 需要Workarround。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM