【发布时间】:2017-02-20 18:29:23
【问题描述】:
所以,长话短说,我想删除(回收)一个项目,保存它的 ID,然后使用该 ID 从垃圾箱中恢复它。
我可以按名称从垃圾箱中恢复项目,如下所示:
if (rItem.leafname == "torecycle.docx")
{
rItem.restore();
client.executequery();
}
}
但这需要用户事先知道项目的名称。
当一个项目被回收并移到回收站时,它的 ID 会改变。 item.Recycle() 方法应该返回带有 RecycleBinItem 的新 ID 的 ClientResult<Guid>,但返回的 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?
任何帮助将不胜感激!
【问题讨论】:
-
这是一种奇怪的行为,msdn 不言自明,它应该返回“回收站中的新项目”的有效 GUID。您是否尝试过调试?调用方法后sharepoint是否有文件在回收站?
-
.Value,是因为 guid 是Nullable,还是因为newGuid实际上是ClientResult<Guid>类型? -
@Tatranskymedved 是的,尽管 Guid 是空的,但它确实正确地回收了该项目。我更新了原始帖子以包含那一点!
-
@dlatikay 我更新了第一篇文章以使其更清晰。是的,基本上
Recycle()返回一个ClientResult<Guid>但.Value。应该给一个指导。 -
先运行
ExecuteQuery,然后读取值。这是否已经解决了问题?
标签: c# sharepoint sharepoint-online