【问题标题】:ASP.NET AJAX nested updatePanel modalPopup funkinessASP.NET AJAX 嵌套 updatePanel modalPopup funkiness
【发布时间】: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> 甚至可能还有第三个 updatePanel 把它包起来:P
  • (抱歉,这很难阅读,回车和空格被忽略了......我应该想到的)

标签: asp.net-ajax modalpopupextender


【解决方案1】:

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

【讨论】:

  • 我们已经学会了始终将我们的 UpdatePanel 的 UpdateModes 设置为 Conditional...老实说,我不完全确定我是否能想到我们希望它们设置为 Always 的场景。
猜你喜欢
  • 2014-08-19
  • 1970-01-01
  • 1970-01-01
  • 2010-11-28
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-12-29
相关资源
最近更新 更多