代码之家  ›  专栏  ›  技术社区  ›  sarsnake

ASP.NET用户控件噩梦

  •  1
  • sarsnake  · 技术社区  · 14 年前

    我实现了一个用户控件,可以在多个页面上重用。然而,我遇到了各种各样的问题,比如跨页面的会话维护、导航时的会话清除——本质上是控制状态维护,我想知道所有这些都值得头疼。

    每次加载页面时,都会向其中添加一个控件,我使用session重新创建其状态(如果适用)。当我离开页面时,我使用web方法通过javascript window.onunload清除会话。window.onunload在新页面加载事件之后执行给我带来了麻烦,因此造成了非常难以处理的情况。

    关于如何解决这个问题而不放弃用户控件的任何技巧? 还有什么方法可以重用代码而不必把头发扯下来? 谢谢!

    2 回复  |  直到 14 年前
        1
  •  1
  •   Dave Swersky    14 年前

    这是一种常见的头痛。根据我所看到的所有文献,以及我个人的经验,通过javascript或任何其他方式依赖清除会话是不实际的。会话状态的概念覆盖在http上;它从来没有打算让会话感知。

    听起来你好像是在把会话状态逼到崩溃的地步。您是否考虑使用viewstate或数据库来管理有状态数据?为什么每次用户导航离开时清除会话数据都很重要?

        2
  •  1
  •   sarsnake    14 年前

    我解决了在托管用户控件的页面上使用ispostback的问题。这样,每当页面不是回发的结果时,用户控件的状态变量将被初始化。