1

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


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

但我在 ModuleCommunication 变量中得到“空”?

4

4 回答 4

1

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

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

于 2012-06-21T23:14:00.467 回答
1

无论您提供什么代码,它都应该可以工作。为了获得帮助,您需要为两者IModuleCommunicatorIModuleListener实现提供代码。但是您可以在此处查看示例实现。如果您需要更多帮助,请告诉我。

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

于 2012-07-02T13:09:13.230 回答
1

要使其正常工作,您需要实现 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";

}

将整个事情包装在一个 try catch 块中以捕获异常......希望这会有所帮助

于 2014-08-28T15:34:32.150 回答
0

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

public event ModuleCommunicationEventHandler ModuleCommunication = new ModuleCommunicationEventHandler(SomeStaticMethodThatWillBeCalledByDefault);
于 2012-10-14T18:22:02.287 回答