在某些情况下,如果您的嵌套模态对话框被包裹在 updatePanels 中(并不理想,但可能需要重新设计,因为一些我们想要重用的用户控件是这样编写的),当您发起应该打开嵌套模态对话框的后台请求时,它会关闭父级对话框。为了举个例子,如果我设置断点并运行...
((ModalPopupExtender)this.Parent.Parent.FindControl("modalPopupExtender'sID").Show();
在调用子 modalPopup 的 Show() 方法之前,它的工作方式与我们最初的预期相同。我认为,由于当 updatePanel 嵌套时,它们可以向其父级提交,因此父级 modalPopup "不知道" 它应该显示并且从头开始重新加载其面板的可见性为 false。由于子 modalPopup 然后嵌套在一个可见性为 false 的父面板内,因此在其上调用 Show() 没有任何效果。因此,获取另一个 modalPopup 的打开,当前的 modalPopup 将关闭。这不是错误,只是我们没有预料到的行为,因此很难跟踪,没有任何异常抛出,但我认为上述解释是有道理的...如果我理解问题不正确,请澄清并启发我,因为这似乎并不是所有时候都会发生!
对于这种特定情况,我们现在陷入困境,需要重新编写一些控件,以避免嵌套 updatePanel 导致此类问题,但我很好奇:
有人以前遇到过这个问题吗?你是否想出了任何聪明的解决方法,而不涉及调用 FindControl() 来重新显示相关的 modalPopup?