【问题标题】:Preventing page lifecycle for one control防止一个控件的页面生命周期
【发布时间】:2010-12-17 00:36:09
【问题描述】:

我正在使用文件管理器类型WebControl,它会执行大量回发。它被放置在一个相对复杂的Page 中。我想防止WebControl 导致整个Page 经历生命周期。 UpdatePanel 有一点帮助,但还不够。

有什么方法可以将WebControlPage 的其余部分隔离开来?我能想到的唯一方法是将WebControl 粘贴在单独的Page 中,并在原始Page 中创建iframe。不幸的是,这也意味着我的WebControl 属性/设置不再是原来的Page。如果我想要两个具有不同设置的WebControl 实例,那么我必须为每个设置创建一个Page,并在我的iframes 中引用正确的设置。不像我想要的那样“拖放”。还有其他建议吗?

【问题讨论】:

    标签: asp.net web-controls


    【解决方案1】:

    很难说,你不能阻止控件经历生命周期;无论如何要确定,在某个页面回发期间,您可以通过执行以下操作来阻止代码在每个事件处理程序中运行:

    if (_shouldNotRun == true)
       return;
    
    //Event handler code
    

    基本上,找出某种方法来指示控件是否应该运行可能是一种选择。 IFrame 会起作用,但是是的,您必须处理您提到的问题。你能详细说明一下这个问题吗?

    HTH。

    【讨论】:

    • 情况正好相反。我需要一种方法来指示页面的其余部分是否应该运行。这是一个文件管理器,因此只需创建文件夹、重命名等就必须回发。我不希望页面的其余部分减慢简单的文件夹更改。不幸的是,有些事情是无法避免的,比如创建控制树......
    • 不,如果你试图改变控制树,你会得到一个错误。您可以使用 javascript 编写的隐藏字段来表示此操作发生在客户端上,当服务器回发时,您可以检查隐藏字段(通过表单集合控件或客户端隐藏字段)以查看您是否应该允许页面的其余部分加载。
    【解决方案2】:

    不能 100% 确定在 PostBack 上调用哪些事件可以覆盖。页面生命周期的良好来源 (http://msdn.microsoft.com/en-us/library/ms178472.aspx)

    但听起来最好重新控制以创建 Ajax Web 服务请求,以实现可能阻止大多数回发的功能?

    干杯, 斯蒂芬

    【讨论】:

    • 使用网络服务是理想的,不幸的是它不是我的控制而且它相对复杂......我会看看我是否能找到任何替代和简单的方法来解决这个问题......
    猜你喜欢
    • 2010-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-10
    • 1970-01-01
    • 1970-01-01
    • 2023-03-18
    • 2011-07-03
    相关资源
    最近更新 更多