加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 在usercontrols之间共享数据

发布时间:2020-12-16 07:43:28 所属栏目:asp.Net 来源:网络整理
导读:在我的页面上,我有n-userControls(相同的控件)我需要在它们之间进行通信(更具体地说,我需要在值中传递一个). 我不想涉及托管页面. 这些控件充当“寻呼机”,并通过托管页面订阅的事件与主机页面上的分页数据进行交互. 因此,当用户单击其中一个寻呼机并更改其
在我的页面上,我有n-userControls(相同的控件)我需要在它们之间进行通信(更具体地说,我需要在值中传递一个).

我不想涉及托管页面.

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

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

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

或者也许我可以使用更好的东西? (没有QueryString)

解决方法

就个人而言,如果不通过控制页面或事件进行此操作,就没有“简单”的方法.

从你所说的我想象的将会是这样的.假设两个控件A和B是您的寻呼机控件.

包含页面在两个控件上都订阅了“PageSelectionChanged”事件,以响应该事件更新您已拥有的数据,并通过所有寻呼机控件枚举设置“当前页面”值.

您已经有了用于控制通信的事件管道 – >页面,使用您已经构建的内容.

为什么不会话?

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

>会话信息,除非在用户会话期间(通常为20分钟)存在明确清除
>如果是数字1,则需要向页面添加项目,if(!ispostback)要“清除”会话变量,以便用户不在另一页面上启动.
>未来的应用程序增长,会话信息必须从进程移出到SQL Server或以其他方式在Web场环境中工作,为此我也试图避免它.
>使用会话将此信息存储在Web服务器的内存中,虽然很小(如果是整数的4个字节),它可以加起来并且是不必要的
>根据更新的性质,您无法仅通过会话确保控制顺序,以确保1控制强制更新所有控件.

还有其他解决方案,类似于上面发布的解决方案,它会对页面进行递归查看,但是你必须小心这一点,以确保你不会进入循环/无限递归的情况,此外,如果你在页面上有很多控件,它可以增加很多开销来不断循环遍历所有内容.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读