ASP.NET AJAX嵌套的updatePanel模态弹出式时髦
看来,在某些情况下,如果我们最终用updatePanels包装了嵌套的modalPopups(我知道不是很理想,应该重构),但这就是我们要使用的,因为我们希望重新使用某些用户控件,用途),则当我们触发应打开嵌套modalPopup的回发时,它会关闭父项。为了争辩,如果我设置一个断点并运行
((ModalPopupExtender)this.Parent.Parent.FindControl("modalPopupExtender'sID").Show();
就在子模式modalPopup的Show()方法被调用之前,它可以像我们最初期望的那样工作。在我看来,因为嵌套了updatePanels时,它们可以将其父级发回,父级modalPopup"不知道"它应该显示并从头开始将其面板的可视性重新加载为false。由于子modalPopup然后嵌套在可见性为false的父面板中,因此对其调用Show()也不起作用。因此,当前的关闭而不是打开另一个modalPopup。这不是错误,只是我们意想不到的行为,因此很难进行跟踪,而不会在任何地方抛出异常,但是我认为上述解释是有道理的...如果我对问题的理解不正确,请进行澄清并启发我,因为这似乎并没有一直发生,我以为会!
在这一点上,对于这种特殊情况,我们不得不重新编写其中的一些控件,以使它们不会以嵌套的updatePanels结尾,因此不会发生这种情况,但是我很好奇:
以前有人遇到过这个问题吗?我们有没有提出任何巧妙的解决方法,而无需调用FindControl()来重新显示()有问题的modalPopup?
解决方案
我已经解决了这个问题!
如果将UpdatePanel的UpdateMode更改为" Conditional",则当子UpdatePanel回发时,父UpdatePanel不会回发,然后嵌套它们完全没有问题!
我不确定为什么UpdateMode =" Always"是默认的,但是,经验教训却是这样。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。