使用ASP.NET中的Event Aggregator在两个用户控件之间进行通信

时间:2011-11-30 19:34:47

标签: asp.net events user-controls aggregator

我找不到ASP.NET Web表单中实现的事件聚合器的任何示例/演示。几乎所有的文章都是针对Silverlight的。

你能否指点我的一些文章,优先使用实现事件聚合器模式的ASP.NET web.forms中的工作代码。

最简单的示例:ASP.net webform中的两个用户控件,使用事件聚合器模式相互通信。

修改

目前,我的ASP.NET Web表单应用程序主要基于用户控件。容器aspx页面可以托管需要在两者之间进行通信的多个用户控件(ascx)。 目前,它是通过容器页面的事件来完成的:

protected override void OnInit(EventArgs e)
    {
        base.OnInit(e);
// Event from UC1 is handled in UC2
        UC1.OnCategoryFilterSelected += new CategoryFilterSelectedHandler(UC2.MethodInUC2);   
// Event from UC1 is handled in in container APSX               page                                                  
              UC1.OnCategoryFilterSelected += new CategoryFilterSelectedHandler     (MethodInContainerPage);   
         }

这已经失去控制:(

1 个答案:

答案 0 :(得分:3)

我不熟悉事件聚合器模式,但可以在Model View Presenter模式中找到问题的解决方案。有一个框架可以将Model View Presenter引入Web窗体。在文档中有一个“交叉呈现器消息传递”的例子,它通过消息总线和发布和订阅模型解决:

http://www.ronaldwidha.net/2010/05/31/a-simple-example-of-the-webformsmvp-cross-presenter-messaging/

此外,如果您想查看模式实现,项目的源代码位于Codeplex

这有帮助吗?