我的印象是嵌套 UpdatePanel 中的控件将导致顶级 UpdatePanel 刷新(从而刷新两个 UpdatePanel),因为该控件上的任何事件都充当“隐式”触发器。那是对的吗?
我一直在尝试连接这样的东西-
UserControl
Parent UpdatePanel
"Show" button
ASP:Panel
Dynamically added UserControls, each with UpdatePanels
单击 Show 按钮时,ASP:Panel 变为可见并开始根据某些后端逻辑动态地将 UserControls 添加到自身。
每个动态添加的控件(以下称为 UserControls)都有自己的支持 Atlas 的按钮和链接,因此它们也有 UpdatePanel。目前,当我单击其中一个 UserControls 中的链接时,ASP:Panel 的全部内容都会消失,就好像它正在重新渲染一样。我所有动态添加的控件都消失了,并且它们的点击事件都没有被调试器捕获。
我假设这里发生的是驻留在嵌套更新面板中的控件导致父 UpdatePanel 回发,因为它们正在触发“隐式”触发器。有没有办法让我的 UserControls 自主操作而不弄乱包含它们的 ASP:Panel?
如果不是,我应该在这里采取什么策略?如果每次在一个(可能很多)UserControls 上发生事件时我都必须重新渲染整个 ASP:Panel,这意味着我将不得不重新创建 UserControls,这需要花费一些精力来创建。我还必须保留某种视图状态来重新创建它们。我对 ASP.NET 有点陌生,这听起来很吓人。如果可以避免的话,我宁愿永远不要刷新顶层 UserControl 和 ASP:Panel,并让每个动态添加的 UserControl 触发并异步处理它们自己的事件。
编辑:我没有动态添加控件,而是将它们添加到标记中(不是一个糟糕的解决方案)。所以摆脱了控件消失的问题,因为现在控件不是动态添加而是存在于标记中。但仍然是父 UpdatePanel 发布对性能造成很大影响,因为所有 UserControls 都被发布而不是一个。如何只进行一次 UserControl 回发?另外,我想知道如何摆脱动态添加控件消失的问题?