【发布时间】:2010-09-14 03:42:17
【问题描述】:
似乎在某些情况下,如果您最终使用 updatePanels 包装了嵌套的 modalPopups(我知道这并不理想,并且可能应该重构,但这就是我们正在使用的,因为我们想要一些用户控件重复使用被写入),当你触发一个应该打开嵌套 modalPopup 的回发时,它会关闭父级。为了论证起见,如果我设置断点并运行
((ModalPopupExtender)this.Parent.Parent.FindControl("modalPopupExtender'sID").Show();
在调用子 modalPopup 的 Show() 方法之前,它按我们最初的预期工作。在我看来,因为当 updatePanels 嵌套时,它们可以回发其父级,父级 modalPopup “不知道”它应该显示并从头开始重新加载其面板的可见性为假。因为子 modalPopup 然后嵌套在可见性为 false 的父面板中,所以对其调用 Show() 也没有任何效果。因此,不是打开另一个 modalPopup,而是关闭当前的。这不是错误,只是我们没有预料到的行为,所以很难追踪,没有任何地方抛出异常,但我认为上面的解释是有道理的......如果我理解错误的问题,请澄清它并启发我,因为这似乎不会一直发生,我认为它会发生!
在这一点上,对于这种特殊情况,我们被困在重写其中一些控件以不以嵌套 updatePanels 结束,所以这不会发生,但我很好奇:
以前有没有人遇到过这个问题,你有没有想出任何聪明的解决方法,不涉及调用 FindControl() 来 re-Show() 有问题的 modalPopup?
【问题讨论】:
-
我使用 UpdatePanel 的次数越多,我就越讨厌它们。我建议你学习 jQuery 或其他 javascript 库,避免同时使用 UpdatePanels。
-
是的,好吧,现在 jQuery 即将与具有增强智能感知功能的 VS 一起提供,我认为这将变得更加普遍! UpdatePanels 在理论上很好,因为您不必考虑它们,只需将它们扔进标记中......只要它们在每种情况下都有效。
-
我不确定我是否理解你所拥有的 updatePanel/modal hierachy。是不是你有一个包含更新面板的模态框,而更新面板里面有一个模态框?
-
我的 atm 前面没有它,因为已经签入了一些更改,但我认为它是
甚至可能还有第三个 updatePanel 把它包起来:PupdatePanel> -
(抱歉,这很难阅读,回车和空格被忽略了......我应该想到的)
标签: asp.net-ajax modalpopupextender