我认为,在嵌套的UpdatePanel中,控件会导致顶级UpdatePanel刷新(从而刷新两个UpdatePanel),因为该控件上的任何事件都充当“隐式”触发器。这是正确的吗?
我一直在尝试连接类似于这样的东西-
UserControl
Parent UpdatePanel
"Show" button
ASP:Panel
Dynamically added UserControls, each with UpdatePanels
当单击Show按钮时,ASP:Panel变为可见状态,并根据某些后端逻辑动态向其中添加UserControl。每个动态添加的控件(以下简称UserControl)都有自己的启用Atlas的按钮和链接,因此它们也有UpdatePanels。目前,当我单击UserControl中的链接时,整个ASP:Panel的内容会消失,就好像正在重新呈现一样。所有动态添加的控件都会消失,调试器中也不会捕获到它们的任何单击事件。
我认为这里发生的情况是嵌套在更新面板中的控件会导致父UpdatePanel提交回传,因为它们触发“隐式”触发器。是否有一种方法使我的UserControls自主运行而不干扰包含它们的ASP:Panel?如果不行,我应该追求什么策略?如果每次在一个(可能很多)UserControl上发生事件时都必须重新呈现整个ASP:Panel,这意味着必须重新创建UserControl,这需要一些努力来创建。我还必须保留某种视图状态来重新创建它们。我对ASP.NET相对陌生,这听起来让人望而却步。如果可能的话,我宁愿从不刷新顶层UserControl和ASP:Panel,让每个动态添加的UserControl异步地触发和处理它们自己的事件。编辑:不再动态添加控件,而是将它们添加到标记中(不错的解决方案)。 因此,消除了控件消失的问题,因为现在控件不是动态添加的,而是存在于标记中。但仍然会有父UpdatePanel提交的大量性能损耗,因为所有UserControls都被提交,而不仅仅是一个。如何使只有一个UserControl回传?另外,我想知道如何消除动态添加控件时的控件消失问题?