我无法使用CSOM通过内部名称获取新添加的托管元数据字段。但是,相关的隐藏文本字段字段可以使用该值。以下语句抛出 Microsoft.SharePoint.Client.PropertyOrFieldNotInitializedException :
以下是获取列表项的代码
List lst= context.Web.Lists.GetByTitle(<ListName>);
CamlQuery camlQuery = new CamlQuery
{
ViewXml = @"<View>
<Query>
<Where>
<Or>
<Eq>
<FieldRef Name='SCStatus' />
<Value Type='TaxonomyFieldType'>Approved</Value>
</Eq>
<Eq>
<FieldRef Name='SCStatus' />
<Value Type='TaxonomyFieldType'>UpdateRequested</Value>
</Eq>
</Or>
</Where>
</Query>
</View>";
};
ListItemCollection listItems = lst.GetItems(camlQuery);
context.Load(listItems);
context.ExecuteQuery();
以下语句获取字段值
(listItem[<InternalName>] as TaxonomyFieldValue).Label
请注意,其他分类学字段可以正常使用。
答案 0 :(得分:1)
由于error未返回指定字段,因此需要明确请求Load<T>(T, \[\]) method
。
您可以考虑以下选项:
使用Include
方法
明确指定要通过Load<T>(T, \[\]) method
检索的字段,例如:
var qry = new CamlQuery();
var items = list.GetItems(qry);
ctx.Load(items,
icol => icol.Include(
i => item.Id,
i => item.DisplayName,
i => item["TaxFieldName"])); //specify taxonomy field
ctx.ExecuteQuery();
在CAML查询中使用ViewFields
使用ViewFields
元素指定要检索的字段,例如:
var qry = new CamlQuery();
qry.ViewXml = "<View>" +
"<ViewFields>" +
"<FieldRef Name='ID'/>" +
"<FieldRef Name='Title'/>" +
"<FieldRef Name='TaxFieldName'/>" +
"</ViewFields>" +
"</View>";
var items = list.GetItems(qry);
ctx.Load(items);
ctx.ExecuteQuery();