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

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

发布时间:2020-12-16 07:44:47 所属栏目:asp.Net 来源:网络整理
导读:我对我页面上的事件管道问题感到困惑.我有一个ASP.NET UserControl,它监视一些浏览器端事件,并将它们作为UpdatePanel async-post-backs引发到服务器.我们称之为EventPump.它包括一些用于管理事件的 JavaScript和服务器端控件.它很棒. 我在同一页面上有几个其
我对我页面上的事件管道问题感到困惑.我有一个ASP.NET UserControl,它监视一些浏览器端事件,并将它们作为UpdatePanel async-post-backs引发到服务器.我们称之为EventPump.它包括一些用于管理事件的 JavaScript和服务器端控件.它很棒.

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

如何让多个UserControl订阅公共EventPump控件的事件?

解决方法

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

>代码到接口,因此EventPump控件实现了具有各种公共事件的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());

(编辑:李大同)

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

    推荐文章
      热点阅读