C# 使用CSOM使用多个值更新托管元数据列

C# 使用CSOM使用多个值更新托管元数据列,c#,sharepoint,sharepoint-online,office365-apps,C#,Sharepoint,Sharepoint Online,Office365 Apps,我的远程事件接收器中有以下代码,用于创建新文件夹,然后使用当前项(已添加的项)值填充文件夹管理的元数据字段:- 现在,当前项和列表项上的FodlerType都是一个托管元数据列,只允许单个值,而CorpType允许多个值。我的上述代码将为FolderType正确分配一个值,但在更新CorpType时会引发此错误:- Microsoft.SharePoint.Client.ClientRequestException HResult=0x80131500消息=对象未与 对象标识或对象标识无效。源=

我的远程事件接收器中有以下代码,用于创建新文件夹,然后使用当前项(已添加的项)值填充文件夹管理的元数据字段:-

现在,当前项和列表项上的
FodlerType
都是一个托管元数据列,只允许单个值,而
CorpType
允许多个值。我的上述代码将为
FolderType
正确分配一个值,但在更新
CorpType
时会引发此错误:-

Microsoft.SharePoint.Client.ClientRequestException
HResult=0x80131500消息=对象未与 对象标识或对象标识无效。源=堆栈跟踪:

有什么建议吗?

您需要使用该对象

var field=item.ParentList.Fields.GetByInternalNameOrTitle(“CorpType”);
var corpTypeTaxField=context.CastTo(字段);
Load(item,i=>i[TaxKeywordFieldName]);
var valuesToCopy=corpTypeTaxField.GetFieldValueByValueCollection(currentitem[“CorpType”].ToString());
corpTypeTaxField.SetFieldValueByValueCollection(列表项,值复制);
请注意,如果您有从头开始构建
TaxonomyFieldValueCollection
时需要查找的术语,那么这会变得更混乱——从另一个项目复制它肯定更容易。

您需要使用该对象

var field=item.ParentList.Fields.GetByInternalNameOrTitle(“CorpType”);
var corpTypeTaxField=context.CastTo(字段);
Load(item,i=>i[TaxKeywordFieldName]);
var valuesToCopy=corpTypeTaxField.GetFieldValueByValueCollection(currentitem[“CorpType”].ToString());
corpTypeTaxField.SetFieldValueByValueCollection(列表项,值复制);
注意,如果您有从头开始构建
TaxonomyFieldValueCollection
时需要查找的术语,那么这会变得更加混乱——从另一个项目复制它肯定更容易

ListItem listItem = context.Web.GetList(webrelativeurl +  "/"+i2["TemplateListUrl"]).AddItem(listItemCreationInformation);

listItem["FolderType"] = currentitem["FolderType"];
listItem["CorpType"] = currentitem["CorpType"];