Domanda

Ho creato una funzionalità denominata Feature1. Feature1 viene attivato in un sito di SharePoint. Creo una web part che contiene il codice seguente.

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

SPWeb web = site.OpenWeb();

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

Ho bisogno di modificare la web part per attivare Feature1 solo Site1.

uso

dovrei? site.Features.Add (feature.Id) o web.Features.Add (feature.Id)

Qual'è la differenza tra le due istruzioni?

È stato utile?

Soluzione

Nel modello a oggetti, uno SPSite è una raccolta siti, mentre uno SPWeb è un sito. Sì, è un po 'di confusione.

Quindi, se si dispone di una funzione che deve essere attivato a livello di sito (non livello di raccolta siti), quindi si consiglia di utilizzare lo SPWeb, che il codice chiama web.

Altri suggerimenti

La differenza è la portata della funzione, che dipende dal contenuto della funzione. Ecco un antipasto per la lettura di materiale su questo:

http://weblogs.asp.net/soever/archive/2007/05/03/sharepoint-features-elements-scope-and-other-info.aspx

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

Luis in base alla tua domanda

ho bisogno di modificare la web part per attivare Feature1 in Site1 solo

Si dovrebbe usare
web.Features.Add(feature.Id);

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a sharepoint.stackexchange
scroll top