Differenza tra SPSite.Features.Add (...) e SPWeb.Features.Add (...)
-
16-10-2019 - |
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.
usodovrei? site.Features.Add (feature.Id) o web.Features.Add (feature.Id)
Qual'è la differenza tra le due istruzioni?
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:
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);