如何使用Sharepoint Server对象模型获取可以为特定Web激活的服务器场中的所有已停用功能?

时间:2016-05-17 13:47:39

标签: c# sharepoint sharepoint-2013 sharepoint-object-model

我需要获取像ManageFeatures.aspx页面中的SPFeatureDefinition列表。可能它应该是这样的:

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

但我怎样才能确定spfeature上可以激活web

2 个答案:

答案 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);
            }                            
        }
    }
}

答案 1 :(得分:0)

尝试使用if(spfeature.Scope = SPFeatureScope.Web)