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

时间:2010-04-12 21:26:58

标签: asp.net javascript webforms postback

我有一个控件,其ImageButton与OnClick事件绑定...单击此控件后,将执行回发并且不会调用事件处理程序。 AutoEventWireup设置为true,我已经仔细检查了拼写等等....我们在一年多的时间里没有触及过这个控件,直到几周前它一直运行良好。

我们已经对加载此控件的控件进行了更改...所以我想知道,我们可以做些什么样的更改来阻止调用这个事件处理程序?有相当多的Javascript正在发生,所以这也可能是罪魁祸首......

编辑:一些澄清......我们正在页面的OnLoad事件中动态加载ImageButton的父控件...如果这是有道理的。

6 个答案:

答案 0 :(得分:2)

AutoEventWireup无关紧要。你的ImageButton是动态加载的,即没有用标记写出来吗?如果它在页面生命周期的后期加载到页面上,例如在PreRender中,事件不会触发。

如果存在JavaScript问题,您的网页甚至不会发布PostBack。这是发生了吗?

答案 1 :(得分:2)

您是否为ImageButton提供了ID?

答案 2 :(得分:1)

我同意BritishDeveloper所说的话。我有一个类似的问题,我动态加载控件,但我无法使用Page.FindControl("controlName")获得对控件的引用有人指出我需要记住页面生命周期。我发现我需要确保在PageInit中加载控件,因为在执行异步回发后控件仍然存在,但没有加载回发,所以无法找到它。这完全是在csharp codebehind和ajax中,但我猜测控件没有重新加载。

答案 3 :(得分:0)

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

答案 4 :(得分:0)

如果您动态创建控件。每次使用新创建的控件触发回发时,都需要重新创建它。试想一下你的应用程序是在服务器上运行的。服务器如何保存动态创建的控件的信息?不要使用Page.IsPostBack来创建回发。 PostbackUrl是一个糟糕的解决方案。需要Workarround。

答案 5 :(得分:0)

我可以详细介绍一下......我只是花了好几个小时修复我自己的问题,类似于这里描述的问题。在创建一些搜索控件的过程中,我添加了一对ImageButtons并在其上设置了PostbackUrl属性。几天后,在测试新代码时,我注意到webform上的其他按钮都没有正确回发。他们会触发一个回发,但代码隐藏的行为似乎每个回发都是一个初始页面请求,并且没有任何事件处理程序被触发。

经过几个小时的故障排除后,我发现了这篇文章。当我回去并从这两个ImageButtons中删除PostbackUrl时,一切都恢复正常。我不知道为什么会导致这个问题,但这里提到的修复对我有用。我想补充一点,我的ImageButtons没有动态添加......它们在标记中,这个问题仍然出现了。使用PostbackUrl set搜索你的标记以获取任何控件...删除它(如果需要,可以在它周围编程)...看看你的事件处理程序是否会正常启动。