Frage

Ich habe eine Funktion namens Feature1 erstellt. Feature1 wird auf einer SharePoint -Site aktiviert. Ich erstelle einen Webpart, der den folgenden Code enthält.

SPSite site = new SPSite("http://intranet/site1");

SPWeb web = site.OpenWeb();

SPFeatureDefinition feature = SPFarm.Local.FeatureDefinitions("Feature1");

Ich muss den Webpart ändern, um Feature1 nur in Site1 zu aktivieren.

Sollte ich es benutzen? Site.features.add (feature.id) oder web.features.add (feature.id)

Was ist der Unterschied zwischen den beiden Anweisungen?

War es hilfreich?

Lösung

Im Objektmodell ist eine Sp -Seite eine Site -Sammlung, während ein SPWEB eine Site ist. Ja, es ist ein wenig verwirrend.

Wenn Sie also über eine Funktion verfügen, die auf der Site -Ebene aktiviert werden muss (nicht auf der Ebene der Site -Sammlung), möchten Sie die SPWEB verwenden, die Ihr Code Web aufruft.

Andere Tipps

Der Unterschied ist der Umfang der Funktion, die vom Inhalt der Funktion abhängt. Hier ist ein Starter für das Lesen von Material darüber:

http://weblogs.asp.net/sover/archive/2007/05/03/sharepoint-features-element-scope-ther-ther-info.aspx

if (feature.Scope == SPFeatureScope.Web)
 web.Features.Add(feature.Id)
else if (feature.Scope == SPFeatureScope.Site)
 site.Features.Add(feature.Id)

Luis basierend auf Ihrer Frage

Ich muss den Webpart ändern, um Feature1 nur in Site1 zu aktivieren

Du solltest benutzen
web.Features.Add(feature.Id);

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