无法使用CSOM获取功能的DisplayName

时间:2015-12-11 15:53:40

标签: sharepoint-2013 csom

我正在尝试使用CSOM获取网站集中可用的所有功能的名称。下面的代码可以很好地获取所有功能的列表,但我无法获得DisplayName属性。

            ClientContext clientContext = new ClientContext(URL);
            Web oWebsite = clientContext.Web;
            clientContext.Load(oWebsite, website => website.MasterUrl, website => website.CustomMasterUrl, website => website.Features);
            clientContext.ExecuteQuery();
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("Authenticated!");
            Console.ForegroundColor = defaultForeground;

            var webFeatures = clientContext.Web.Features;
            clientContext.Load(webFeatures, fcol => fcol.Include( f => f.DefinitionId));
            clientContext.ExecuteQuery();
            foreach (var f in webFeatures)
            {
                Console.WriteLine(f.DefinitionId);
            }

这是一个post,解释了如何获取DisplayName,但它不适用于我。

我已针对SP2013升级了SDK,但仍无法找到此属性。如果可能的话,你能告诉我吗?

2 个答案:

答案 0 :(得分:0)

Feature.DisplayName property无法访问,因为您没有从服务器请求它,请替换以下行:

clientContext.Load(webFeatures, fcol => fcol.Include(f => f.DefinitionId));

使用:

clientContext.Load(webFeatures, fcol => fcol.Include(f => f.DisplayName,f => f.DefinitionId));
  

表达式fcol.Include(f => f.DisplayName,f => f.DefinitionId)   构造获取features的查询   包含Feature.DefinitionIdFeature.DisplayName个属性。

示例

using (var ctx = new ClientContext(url))
{
    var webFeatures = ctx.Web.Features;
    ctx.Load(webFeatures, fcol => fcol.Include(f => f.DisplayName,f => f.DefinitionId));
    ctx.ExecuteQuery();
}

<强>更新

答案 1 :(得分:0)

我有一个类似的情况,看来SP 2013 CSOM(v15)根本不可能,因为即使在最新的(当前)库Microsoft.SharePoint.CLient.dll 15.0.5127.1000(来自4.2019 CU)中,此属性也是无法使用。尽管在documentation中提到它在那里。