Domanda

Sto cercando di comunicare inter-modulo con DotNetNuke 4.8.4 - e mi chiedo se qualcuno abbia dei buoni esempi per farlo.

Ho capito che hai implementato IModuleCommunicator sul mittente e IModuleListener sul destinatario - ma non vedo un modo per legarli insieme oltre a lasciarli entrambi sulla stessa pagina.

TUTTI i listener su una determinata pagina ascoltano TUTTI i mittenti su una determinata pagina? In tal caso, qual è la migliore pratica per filtrare il rumore?

È stato utile?

Soluzione

Stavo leggendo su IMC ieri sera in Venditori di Mitchel Programmazione dei moduli DotNetNuke libro.

Ecco alcuni dei principali takeaway:

  1. Funziona solo tra moduli sul stessa pagina.
  2. Considerazioni AJAX - probabilmente non funzionerà con postback parziali
  3. Gli eventi generati vengono inviati a qualsiasi modulo che implementa IModuleListner, quindi devi esserlo certo che stai consumando il giusto cosa.

Ecco un esempio di invio di informazioni:

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);
}

Per filtrare il rumore, ti consigliamo di includere alcune informazioni identificative molto specifiche. Sembra che tu abbia molte opportunità di farlo anche se durante l'impostazione degli EventArgs da consumare.

Altri suggerimenti

Non ho usato IMC personalmente, ma a quanto ho capito, tutti gli ascoltatori fanno ascoltano tutti i mittenti. ModuleCommunicationEventArgs che viene inviato all'ascoltatore include una proprietà Target, che a mio avviso dovrebbe essere la prima cosa da controllare, ovvero verificare se questo messaggio è indirizzato a te.

Uso Open Web Studio . È uno strumento interessante, sebbene manchi di documentazione solida. Mi permette di comunicare due moduli DotNetNuke nella stessa pagina e ricaricare automaticamente le informazioni sul secondo in base a qualcosa cliccato sul primo. Non so se questo è quello che stai cercando. Se lo è, posso darti qualche altro suggerimento e alcuni link a tutorial su come far funzionare questa cosa.

OWS è gratuito (con supporto a pagamento) ma, come ho già detto, manca di documentazione approfondita, anche se puoi superare un po 'di pazienza e confusione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top