所以,长话短说,我想删除(回收)一个项目,保存其ID,然后使用该ID从垃圾桶中恢复它。
我可以通过名称从垃圾桶中恢复一个项目,如下所示:
if (rItem.leafname == "torecycle.docx")
{
rItem.restore();
client.executequery();
}
}
但这需要用户事先知道项目的名称。
当项目被回收并移至垃圾箱时,其ID会发生变化。 item.Recycle()
方法应该返回ClientResult<Guid>
RecycleBinItem
的新ID,但返回的Guid
为空(全为零)。
我像这样回收物品:
if (item.DisplayName == "torecycle")
{
client.Load(item);
var recycledItem = item.Recycle();
var newGuid = recycledItem.Value;
Console.WriteLine("new guid " + newGuid);
Client.ExecuteQuery();
}
打印输出为new guid 00000000-0000-0000-0000-000000000000
,但它确实将回收站项目正确移动到垃圾箱。
我在这里遗漏了什么吗?如何获得RecycleBinItem
的实际Guid?
非常感谢任何帮助!
答案 0 :(得分:0)
Recycle
函数的返回值是ClientResult<T>
,它只是底层SOAP请求/响应模型的包装器。请求在本地收集,并在调用ExecuteQuery
时发送。因此,只有在该调用结束后才会填充结果值。
要了解SharePoint服务器和客户端对象模型之间的这种差异,有必要查看overall concept,因为在ClientResult的文档中,它从未被提及过。