Frage

Ich habe einen Ereignisempfänger, den ich mit Visual Studio entwickelt habe und den ich bereitstellen möchte.Aber in diesem Fall möchte ich es bereitstellen, ohne es einer Liste zuzuordnen.(Ich füge den Ereignisempfänger später über PowerShell einer bestimmten Liste hinzu.)

Ich weiß das, wenn ich das setze Scope zu Site dann wird der Empfänger für alle Listen und Bibliotheken ausgelöst.Und ich weiß das, wenn ich das setze Scope zu Web und bieten einen Wert für ListUrl dann wird es nur an die angegebene Liste gebunden.

Es scheint jedoch, dass wenn ich das setze Scope zu Web und geben Sie keine an ListUrl, es verhält sich genauso wie Site und bindet an alles.Hier ist mein Code

<?xml version="1.0" encoding="utf-8"?>
<Elements xmlns="http://schemas.microsoft.com/sharepoint/">
  <Receivers Scope="Web">
    <Receiver>
      <Name>AutoNumberDocumentItemAdded</Name>
      <Type>ItemAdded</Type
      <Assembly>$SharePoint.Project.AssemblyFullName$</Assembly>
      <Class>ArticleManagementWorkflow.AutoNumberDocument.AutoNumberDocument</Class>
      <SequenceNumber>10000</SequenceNumber>
      <Synchronization>Synchronous</Synchronization>
    </Receiver>
  </Receivers>
</Elements>

Gibt es eine Möglichkeit, den Empfänger bereitzustellen und zu aktivieren, ohne dass er an irgendetwas gebunden ist?

War es hilfreich?

Lösung

Stellen Sie den Ereignisempfänger bereit und aktivieren Sie die Funktion nicht.Die Elementdatei hängt den Ereignisempfänger nur dann an die Liste an, wenn die Funktion aktiviert ist.Hängen Sie den Ereignisempfänger anschließend von Ihrer Powershell an die Liste an.

Andere Tipps

Es gibt eine weitere Möglichkeit, einen Ereignisempfänger zu einer bestimmten Liste hinzuzufügen: Fügen Sie den Ereignisempfänger dem Inhaltstyp hinzu.

Folgendermaßen:

  • Benutzerdefinierten Inhaltstyp für eine Liste erstellen
  • Fügen Sie den Ereignisempfänger dem Inhaltstyp hinzu
  • Fügen Sie einer bestimmten Liste Inhaltstypen hinzu, um das Ereignis zu registrieren Empfänger

In diesem Fall können Sie steuern, auf welcher Liste ein Ereignisempfänger registriert werden soll.

Bitte verweisen Sie auf einen tollen Artikel Exemplarische Vorgehensweise 3 - Entwickeln eines Ereignisempfängers für einen Inhaltstyp für weitere Details.

In Ihrem Fall benötigen Sie keine Funktion.
Sie benötigen lediglich eine Klassenbibliothek mit Ihrer Ereignisempfängerklasse, signieren die Assembly und stellen sie für GAC bereit.Registrieren Sie dann mit PowerShell den Ereignisempfänger für die gewünschte Liste.

Wie wäre es, wenn Sie es an eine Dummy-Liste anhängen, die im Web nicht vorhanden ist, und es später mit Powershell an die eigentliche Liste anhängen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit sharepoint.stackexchange
scroll top