Ich füge den ItemAdding Event-Empfänger für eine benutzerdefinierte Listenvorlage hinzu. Sowohl der Ereignisempfänger als auch die Listenvorlage werden von derselben Funktion bereitgestellt. Die gleiche Funktion erstellt auch Listeninstanzen.
Das Problem, das ich habe, ist, dass das Ereignis für jedes Listenelement ausgelöst wird in der Site, auf der es bereitgestellt wurde. Elements.xml für eventreceivre ist:
%Vor%Ich bin mir nicht sicher, was ich falsch mache. Ich habe mehr oder weniger alles aus hier gemacht .
Env: Sharepoint 2010 mit Veröffentlichungsfunktion auf dieser Site
Ich hatte das gleiche Problem mit meinem Event Receiver. Ich habe ListTemplateId, ListTemplateOwner und sogar ListUrl ausprobiert. Ich wusste, dass die Einstellungen gültig waren, aber sie wurden ignoriert und der Empfänger wurde an jede Liste angehängt.
Ich hatte eine Ahnung, dass es möglicherweise damit zusammenhängt, dass der Ereignisempfänger innerhalb einer Site-Bereichsfunktion deklariert wird. Dies scheint durch die "Dokumentation" für SPEventElement bestätigt zu werden:
%Vor%Scheint so, als ob ListTemplateId, ListTemplateOwner und ListUrl für Site-Bereichsfunktionen ignoriert werden. Wenn ich mein Event Receiver-Element in eine webbasierte Funktion verschoben habe, wurde der Empfänger nur an die gewünschte Liste angeschlossen.
Aus dem MSDN SDK - Ссылка
Ein Empfänger-Tag kann eine siteweite Bedeutung haben Ereignisregistrierung oder eine Veranstaltung Registrierung für das Root-Web. Das Das Scope-Attribut wird zur Definition von at verwendet welche Ebene sind die Ereignisempfänger? angewendet. Wenn das Empfänger-Tag keine hat ListTemplateId- oder ListUrl-Attribut, der Ereignisempfänger ist registriert bei der gleiche Umfang wie das Feature. Zum Beispiel, ein Feature, auf das ein Bereich festgelegt ist Das Web führt zu einem Ereignisempfänger zu einem Ereignisempfänger hinzugefügt werden Sammlung, die auf das Web beschränkt ist.
Dies führt zu der Annahme, dass die von Ihnen angegebene Liste VorlageID möglicherweise ungültig ist.
Wenn Sie den Ereignisempfänger nur für eine bestimmte Liste benötigen, müssen Sie dieses Attribut festlegen und es wird ISA funktionieren Stellen Sie jedoch sicher, dass Ihre Funktion im Web-Bereich und nicht im Site-Bereich ausgeführt wird, als ob der Site-Bereich für alle Listen im System ausgelöst wird.
Tags und Links sharepoint sharepoint-2010 eventreceiver sharepoint-listtemplate