質問

feature1という名前の機能を作成しました。 Feature1はSharePointサイトでアクティブになります。次のコードを含むWebパーツを作成します。

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

SPWeb web = site.OpenWeb();

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

サイト1のみをアクティブにするには、Webパーツを変更する必要があります。

使用する必要がありますか? site.features.add(feature.id)またはweb.features.add(feature.id)

2つの指示の違いは何ですか?

役に立ちましたか?

解決

オブジェクトモデルでは、SPSiteはサイトコレクションですが、SPWEBはサイトです。はい、少し混乱しています。

したがって、サイトレベル(サイト収集レベルではなく)でアクティブ化する必要がある機能がある場合は、コードがWebを呼び出すSPWEBを使用する必要があります。

他のヒント

違いは、機能の範囲であり、機能の内容に依存します。これがこれについて素材を読むためのスターターです:

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)

あなたの質問に基づいたルイス

サイト1のみでfeature1をアクティブにするには、Webパーツを変更する必要があります

使用する必要があります
web.Features.Add(feature.Id);

ライセンス: CC-BY-SA帰属
所属していません sharepoint.stackexchange
scroll top