2016-05-17 1 views
1

ManageFeatures.aspxページのようにSPFeatureDefinitionsのリストを取得する必要があります。おそらくそれは、このようななめらかでなければなりません:Sharepoint Serverオブジェクトモデルを使用して特定のWebに対してアクティブ化できるファーム内の無効化された機能をすべて取得する方法はありますか。

... 
using (SPWeb web = spSite.OpenWeb()) 
foreach (var spfeature in SPFarm.Local.FeatureDefinitions) 
{ 
    result.Add(spfeature);       
} 

しかし、どのように私はspfeatureweb上で活性化することができることを確認することができますか?

答えて

0

場合(spfeature.Scope = SPFeatureScope.Web)を使用してみてください

+0

うん、私はまた、おかげでそれを考え出しました。 –

0

すべてのフィーチャ定義を取得してから、それらをWebスコープでフィルタリングする必要があります。ここでは、コードされています

using (SPSite spSite = new SPSite(siteId)) 
{ 
    using (SPWeb web = spSite.OpenWeb(selectedWeb.Id)) 
    { 
     foreach (var spfeature in SPFarm.Local.FeatureDefinitions) 
     { 
      if (spfeature.Scope.Equals(SPFeatureScope.Web) && !spfeature.Hidden) 
      { 
       var feature = new Feature(); 
       feature.Name = spfeature.DisplayName; 
       feature.Id = spfeature.Id; 
       feature.IsActive = web.Features[spfeature.Id] != null; 

       result.Add(feature); 
      }        
     } 
    } 
} 
関連する問題