ASP.Net UpdatePanel ImageButton导致" this._postbackSettings.async为null或者不是对象"
我在dragPanelExtender内的popupControlExtender内的更新面板上收到此错误。
我看到很多其他人都遇到了这个问题,并且进行了各种修复,但没有一个对我有用。
我希望听到一个合理的解释,说明为什么会这样,并且以一种万无一失的方式来避免将来发生此类问题。
我发现像其他人一样,当触发器是LinkButton而不是ImageButton时,不会发生此错误,仍然想知道是否有人对此进行了解释。
解决方案
回答
我的最佳猜测是UpdatePanel无法将自定义的"异步"属性正确地写到回发请求中。这可能是由于阻止了包装它的控件之一造成的(我的直觉是它是popupControlExtender,它与updatepanels往往会表现出奇怪的行为,因为它打算出于显示/隐藏目的来管理其中的事件)。
我建议我们删除updatepanel并为自己的特定业务需求滚动自己的解决方案,或者在其中实现自己的弹出脚本(可能会更容易编写)。
顺便说一下,在某些背景下," this._postbackSettings.async"是AJAX.NET框架,试图弄清楚这是否是异步调用。我们可以通过在发送回发之前以编程方式进行设置来克服此问题(捕获回发事件,并将该字段添加到回发请求(如果尚不存在)。
只是一些想法...我不相信这个问题会有"即插即用"的答案!
回答
在ScriptManager控件上将" EnablePartialRendering"设置为false可防止该错误,但这不是最佳解决方案。失去部分渲染的好处可能会很大,具体取决于应用程序。
仅作记录,我的所作所为与看到错误的其他人并不完全相同。我有一个PopupControlExtender,其中是一个复选框。我使用javascript方法添加了"全选"链接,以编程方式选择/取消全选。我没有使用Imagebutton。在添加JavaScript之前,我没有看到该错误,现在即使将其删除,该错误仍然存在。我还必须进行另一项更改。
我希望这可以帮助别人...
-马特