Разница между spsite.features.add (…) и spweb.features.add (…)
-
16-10-2019 - |
Вопрос
Я создал функцию с именем функции1. Feature1 активируется на сайте SharePoint. Я создаю веб -часть, которая содержит следующий код.
SPSite site = new SPSite("http://intranet/site1");
SPWeb web = site.OpenWeb();
SPFeatureDefinition feature = SPFarm.Local.FeatureDefinitions("Feature1");
Мне нужно изменить веб -часть, чтобы активировать функцию1 только в Site1.
Я должен использовать? site.features.add (feature.id) или web.features.add (feature.id)
В чем разница между двумя инструкциями?
Решение
В модели объекта SPSITE - это коллекция сайтов, тогда как SPWEB - это сайт. Да, это немного сбивает с толку.
Поэтому, если у вас есть функция, которую необходимо активировать на уровне сайта (не уровень сбора сайтов), то вы хотите использовать SPWEB, который ваш код вызывает веб -сайт.
Другие советы
Разница - это объем функции, которая зависит от содержания функции. Вот стартовый материал для чтения материала об этом:
if (feature.Scope == SPFeatureScope.Web)
web.Features.Add(feature.Id)
else if (feature.Scope == SPFeatureScope.Site)
site.Features.Add(feature.Id)
Луис на основе вашего вопроса
Мне нужно изменить веб -часть, чтобы активировать функции1 только в сайте1
Вы должны использовать
web.Features.Add(feature.Id);