3

似乎在某些情况下,如果您最终使用 updatePanels 包裹的嵌套 modalPopups (我知道这并不理想,可能应该重构,但这就是我们正在使用的,因为我们想要重构一些用户控件使用已编写),当您触发应该打开嵌套 modalPopup 的回发时,它会关闭父级。为了争论,如果我设置断点并运行

((ModalPopupExtender)this.Parent.Parent.FindControl("modalPopupExtender'sID").Show();

就在调用子 modalPopup 的 Show() 方法之前,它按我们最初的预期工作。在我看来,因为当 updatePanels 嵌套时,它们可以回发其父级,父级 modalPopup “不知道”它应该显示并从头开始重新加载其面板的可见性为假。因为子 modalPopup 然后嵌套在可见性为 false 的父面板中,所以对其调用 Show() 也没有任何效果。因此,不是打开另一个 modalPopup,而是关闭当前的。这不是错误,只是我们没有预料到的行为,所以很难追踪,没有任何地方抛出异常,但我认为上面的解释是有道理的......如果我理解错误的问题,请澄清它并启发我,因为这不会
在这一点上,对于这种特殊情况,我们被困在重新编写其中一些控件以不以嵌套的 updatePanels 结束,所以这不会发生,但我很好奇:
以前有没有人遇到过这个问题,你来过吗?是否有任何不涉及调用 FindControl() 以 re-Show() 有问题的 modalPopup 的巧妙解决方法?

4

1 回答 1

4

我已经解决了这个问题!
如果您将 UpdatePanel 的 UpdateMode 更改为“Conditional”,则父 UpdatePanel 不会在子 UpdatePanel 回发时回发,然后嵌套它们根本没有问题!
我不确定为什么 UpdateMode="Always" 是默认值,但是,吸取了教训。

于 2008-09-30T16:10:35.853 回答