Разница между spsite.features.add (…) и spweb.features.add (…)

sharepoint.stackexchange https://sharepoint.stackexchange.com/questions/6842

  •  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, который ваш код вызывает веб -сайт.

Другие советы

Разница - это объем функции, которая зависит от содержания функции. Вот стартовый материал для чтения материала об этом:

http://weblogs.asp.net/soever/archive/2007/05/03/sharepoint-features-elements-cope-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)

Луис на основе вашего вопроса

Мне нужно изменить веб -часть, чтобы активировать функции1 только в сайте1

Вы должны использовать
web.Features.Add(feature.Id);

Лицензировано под: CC-BY-SA с атрибуция
Не связан с sharepoint.stackexchange
scroll top