1

ManageFeatures.aspx ページのように SPFeatureDefinitions のリストを取得する必要があります。おそらく、次のようになります。

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

spfeatureしかし、それが でアクティブ化できることをどのように確認できますwebか?

4

2 に答える 2

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);
            }                            
        }
    }
}
于 2016-05-17T15:05:22.803 に答える