ASP.NET AJAX嵌套updatePanel modalPopup funkiness

时间:2008-09-29 23:54:54

标签: asp.net-ajax modalpopupextender

在某些情况下,如果你最终得到用updatePanels包装的嵌套modalPopup(我不知道,并且可能应该重构,但这是我们正在使用的,因为我们想要的一些用户控件如何当你发起一个应该打开嵌套modalPopup的回发时,它会关闭父级的一个回复。为了论证,如果我设置一个断点并运行

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

在调用子modalPopup的Show()方法之前,它就像我们原先预期的那样工作。在我看来,因为当updatePanel嵌套时,他们可以回发他们的父,父modalPopup“不知道”它应该显示并从头开始重新加载其面板的可见性为false。因为子modalPopup然后嵌套在可见性为false的父面板内,所以对它调用Show()也没有效果。因此,不是打开另一个modalPopup,而是关闭当前的modalPopup。这不是一个错误,只是我们没想到的行为,所以很难跟踪,没有任何异常抛出任何地方,但我认为上述解释是有道理的...如果我不正确地理解问题,请澄清它并且启发我,因为这似乎不会一直发生,我认为它会发生! 在这一点上,对于这种特殊情况,我们不得不重新编写其中一些控件而不是最终使用嵌套的updatePanel,所以这不会发生,但我很好奇: 有没有人遇到这个问题,你有没有想出任何聪明的解决办法,不涉及调用FindControl()来重新显示()有问题的modalPopup?

1 个答案:

答案 0 :(得分:3)

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