gpt4 book ai didi

asp.net - 在用户控件之间共享数据

转载 作者:行者123 更新时间:2023-12-04 15:49:04 25 4
gpt4 key购买 nike

在我的页面上,我有 n-userControls(相同的控件),我需要在它们之间进行通信(更具体地说,我需要传递一个值)。

我不想涉及托管页面。

这些控件充当“寻呼机”,并通过主机页面订阅的事件与主机页面上的分页数据进行交互。
因此,当用户单击其中一个寻呼机并更改其状态时,另一个控件应该知道它并相应地更改自身。

我不能使用 VieState,因为 viewstate 是每个控件,controlstate 也是如此。

我可以为此使用 Session 吗? ( session 是共享的,我只需要存储一个值)

或者也许我可以使用更好的东西? (没有查询字符串)

最佳答案

就个人而言,如果不通过控制页面或事件来执行此操作,就没有一种“简单”的方法可以做到这一点。

从你所说的来看,我所设想的会是这样的。假设两个控件 A 和 B 是您的寻呼机控件。

包含页面订阅两个控件上的“PageSelectionChanged”事件,作为响应该事件,它更新您已经拥有的数据,并枚举所有设置“当前页面”值的寻呼机控件。

您已经拥有用于从控制 -> 页面进行通信的事件管道,使用您已经构建的内容。

为什么不是 session ?

我在评论中被问到这是否比 session 更好,答案是肯定的,原因有很多。

  • session 信息,除非在用户 session 期间(通常为 20 分钟)明确清除存在
  • 对于数字 1,您需要向页面添加项目,以便 if(!ispostback) “清除” session 变量,以便用户不会从不同的页面开始。
  • future 的应用程序增长, session 信息必须移出进程到 SQL Server 或以其他方式在 Web 场环境中工作,为此我也尽量避免它。
  • 使用 session 将此信息存储在网络服务器的内存中,尽管很小(如果是整数,则为 4 个字节)它可以加起来并且是不必要的
  • 根据更新的性质,您无法确保单独使用 session 的控制顺序来确保 1 个控件强制更新所有控件。

  • 还有其他解决方案,类似于上面发布的解决方案,它会递归查看页面,但是您必须小心谨慎,以确保不会陷入循环/无限递归情况,此外,如果您页面上有很多控件,它会增加很多开销来不断循环遍历所有内容。

    关于asp.net - 在用户控件之间共享数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2526814/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com