我正在考虑使用 DotNetNuke 4.8.4 进行模块间通信 - 并且想知道是否有人有任何这样做的好例子。
我知道您在发送者上实现了 IModuleCommunicator,在接收者上实现了 IModuleListener - 但除了将它们放在同一页面上之外,没有看到将它们联系在一起的方法。
给定页面上的所有监听器都监听给定页面上的所有发件人吗?如果是这样,过滤掉噪音的最佳做法是什么?
我正在考虑使用 DotNetNuke 4.8.4 进行模块间通信 - 并且想知道是否有人有任何这样做的好例子。
我知道您在发送者上实现了 IModuleCommunicator,在接收者上实现了 IModuleListener - 但除了将它们放在同一页面上之外,没有看到将它们联系在一起的方法。
给定页面上的所有监听器都监听给定页面上的所有发件人吗?如果是这样,过滤掉噪音的最佳做法是什么?
昨晚我刚刚在Mitchel Sellers DotNetNuke Module Programming一书中阅读 IMC。
以下是一些主要内容:
以下是发送信息的示例:
if (ModuleCommunication != null)
{
var args = new ModuleCommunicationEventArgs();
args.Sender = "Something";
args.Target = "Something Else";
args.Text = "Something";
args.Type = "Something";
args.Value = new Object();
ModuleCommunication(this, args);
}
要过滤掉噪音,您需要确保包含一些非常具体的识别信息。尽管在设置要使用的 EventArgs 时,您似乎有很多机会这样做。
我个人没有使用过 IMC,但据我所知,所有的听众都会听所有的发件人。发送到侦听器的 ModuleCommunicationEventArgs 包括一个 Target 属性,我认为这应该是您首先要检查的内容,即检查此消息是否发给您。
我使用Open Web Studio。这是一个有趣的工具,尽管它缺乏强大的文档。它使我能够在同一页面中通信两个 DotNetNuke 模块,并根据第一个单击的内容自动重新加载第二个模块的信息。我不知道这是否是你要找的。如果是这样,我可以给你一些更多的提示和一些关于如何让这个东西工作的教程的链接。
OWS 是免费的(有付费支持),但正如我所说,它缺乏深入的文档,尽管你可以通过一些耐心和大惊小怪来过去。