gpt4 book ai didi

asp.net - 单个 ASP.NET UserControl 事件的多个订阅者?

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

我对页面上的事件管道问题感到困惑。我有一个 ASP.NET 用户控件,它监视一些浏览器端事件并将它们作为 UpdatePanel 异步回发到服务器引发。我们称它为 EventPump。它包括一些 JavaScript 和服务器端控件来管理事件。它工作得很好。

我在同一页面上有几个其他控件,它们彼此不了解,但想订阅 EventPump 引发的一些事件。通常,一个控件会通过在其标记中包含该控件并连接事件来订阅另一个控件的事件。但在这种情况下,这会给我多个 EventPump 实例,这是我不想要的。

如何让多个 UserControl 订阅通用 EventPump 控件的事件?

最佳答案

我能想到的一些其他选择:

  • 代码到接口(interface),因此 EventPump 控件实现了具有各种公共(public)事件的 IEventPump。包含页面使用一个名为 EventPump 的属性实现 IEventPumpContainer,该属性允许所有其他用户控件像这样注册:
    ((IEventPumpContainer)Page).EventPump.MyEvent += MyEventHandler;
  • 如果页面知道需要订阅的控件,您可以让它在事件触发时调用控件上的适当方法。例如:
    EventPump.MyEvent += (s, e) => SomeControl.SomeMethod();
  • 或者,可以说更好的是使事件成为一等公民,并拥有一个可用于订阅和引发事件的事件调度程序。例如:
    Events.Register<MyEvent>(e => TextBox.Text = "MyEvent Happened");
    ...
    Events.Raise(new MyEvent());
  • 关于asp.net - 单个 ASP.NET UserControl 事件的多个订阅者?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7649229/

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