1

私はDNN6を使用しており、2つのモジュールを作成し、モジュールコミュニケーターを使用してそれらの間を接続しようとしました。これが私のコードです:


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

しかし、ModuleCommunication 変数で「null」を取得していますか?

4

4 に答える 4

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 に答える
1

あなたが提供したどんなコードからでも、それはうまくいくはずです。ヘルプを得るには、IModuleCommunicatorIModuleListener実装の両方のコードを提供する必要があります。ただし、ここで実装例を確認できます。さらにサポートが必要な場合はお知らせください。

また、dnn の最新バージョンを使用していない場合は、最新の dnn インスタンスを作成してテストしてみてください。さらにサポートが必要な場合はお知らせください。

于 2012-07-02T13:09:13.230 に答える
1

DNN マニフェストの更新パネルでモジュールをラップしていますか (部分レンダリング オプションを有効にします)。

私の記憶が正しければ、IMC は UpdatePanels 経由では機能しません。

于 2012-06-21T23:14:00.467 に答える
0

ここでの答えは簡単です。イベントがどのように機能するかを正確に忘れてしまいました。他のオブジェクトと同じように、インスタンス化する必要があります。別名。

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