模块通信在 DNN 中不起作用

本文关键字:不起作用 DNN 通信 模块 | 更新日期: 2023-09-27 18:36:59

我正在使用DNN6,我创建了两个模块,并尝试使用模块通信器在它们之间连接,这是我的代码:


#region IntermoduleCommunication
ModuleCommunicationEventArgs oArgs = new ModuleCommunicationEventArgs();
oArgs.Value = Session["ShoppingCart"];
if (ModuleCommunication != null)
 ModuleCommunication(this, oArgs);
#endregion

但我在模块通信变量中得到"空"?

模块通信在 DNN 中不起作用

您是否在 DNN 清单中的更新面板中包装模块(是否启用了支持部分呈现选项)?

如果我没记错的话,IMC 无法通过 UpdatePanel 工作。

从您提供的任何代码来看,它都应该有效。为了获得帮助,您需要为IModuleCommunicatorIModuleListener实现提供代码。但您可以在此处查看示例实现。如果您需要更多帮助,请告诉我。

此外,如果您没有使用最新版本的 dnn,请尝试通过创建最新的 dnn 实例来测试它。如果您需要更多帮助,请告诉我。

要使其正常工作,您需要实现IModuleCommunicator接口。右键单击如下所示的IModuleCommunicator并提取界面。

public partial class MyClass: PortalModuleBase, IModuleCommunicator

提取后将生成以下内容

 public event ModuleCommunicationEventHandler ModuleCommunication;

我从按钮单击事件调用它

protected void btn1_Click(Object sender, EventArgs e)
        {
    if (ModuleCommunication == null) return;
                ModuleCommunicationEventArgs args = new ModuleCommunicationEventArgs();
                args.Sender = this.GetType().ToString(); ;
                args.Target = "MyTarget";
}

整个事情包装在一个尝试捕获块中以捕获异常......希望这有帮助

这里的答案很简单,你已经忘记了事件是如何工作的,它们就像任何其他对象一样,你必须实例化它们。 又名。

public event ModuleCommunicationEventHandler ModuleCommunication = new ModuleCommunicationEventHandler(SomeStaticMethodThatWillBeCalledByDefault);