如何在 CSOM 请求中包含项目的 FieldValues
Posted
技术标签:
【中文标题】如何在 CSOM 请求中包含项目的 FieldValues【英文标题】:How to include Project's FieldValues in CSOM request 【发布时间】:2015-07-03 05:38:47 【问题描述】:我正在尝试使用客户端对象模型 (CSOM) 从 SharePoint 中提取所有项目信息。以下是我获取项目信息的方式:
projectContext.Load(projectContext.Projects,
c =>
c.Where(p => p.Id == new Guid(id))
.IncludeWithDefaultProperties(f => f.Name, f => f.Owner.Id, f => f.CreatedDate,
f => f.StartDate, f => f.FinishDate, f => f.PercentComplete, f => f.Description));
projectContext.Load(projectContext.LookupTables, c => c.Include(f => f.Id, f => f.Entries));
projectContext.Load(projectContext.Web.SiteUsers);
projectContext.ExecuteQuery();
但是,我还需要从这些项目中检索 FieldValues 属性,但我不知道如何将它包含在同一个查询中。从上面的代码中检索项目后,我发现了如何在项目级别执行此操作,如下所示:
var pubProject = project.IncludeCustomFields;
projectContext.Load(pubProject);
projectContext.Load(pubProject.CustomFields);
projectContext.ExecuteQuery();
var fieldValues = pubProject.FieldValues;
现在 pubProject 将包含 FieldValues 信息,但对所有项目使用该方法变得太慢(调用 SharePoint 需要 1 - 4 秒),因为我需要为每个项目和最佳实践提出额外请求CSOM 是要尽量少打电话。
如果我在 include
字段中包含 FieldValues,如下所示:
projectContext.Load(projectContext.Projects,
c =>
c.Where(p => p.Id == new Guid(id))
.IncludeWithDefaultProperties(f => f.Name, f => f.Owner.Id, f => f.CreatedDate,
f => f.StartDate, f => f.FinishDate, f => f.PercentComplete, f => f.Description, f => f.FieldValues));
我收到以下错误:
不支持查询表达式“f.FieldValues”。
【问题讨论】:
我在这里面临同样的问题。有任何关于该问题的更新吗? @HellKeeper 没有这方面的更新。我还没有找到解决方案。 【参考方案1】:我认为您需要将f => f.CustomFields
放入您的.IncludeWithDefaultProperties
语句而不是f.FieldValues
-- 加载CustomFields
应该会导致FieldValues
被填充
【讨论】:
以上是关于如何在 CSOM 请求中包含项目的 FieldValues的主要内容,如果未能解决你的问题,请参考以下文章
AWS-amplify 在请求中包含 cognito Authorization 标头
如何在 Dropzone 上传请求的标头中包含 CSRF 令牌?