我需要获取像ManageFeatures.aspx页面中的SPFeatureDefinition列表。可能它应该是这样的:
...
using (SPWeb web = spSite.OpenWeb())
foreach (var spfeature in SPFarm.Local.FeatureDefinitions)
{
result.Add(spfeature);
}
但我怎样才能确定spfeature
上可以激活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);
}
}
}
}
答案 1 :(得分:0)
尝试使用if(spfeature.Scope = SPFeatureScope.Web)