2017-02-20 4 views
1

Итак, короткая история, я хочу удалить (переработать) элемент, сохранить его идентификатор, а затем восстановить его из корзины с помощью этого идентификатора.item.Recycle возвращает пустой GUID (SharePoint Online, C#)

я могу восстановить элемент из урны по имени, например, так:

if (rItem.leafname == "torecycle.docx") 
    { 
     rItem.restore(); 
     client.executequery(); 
    } 
} 

Но это требует от пользователя знать имя элемента заранее.

Когда товар перерабатывается и перемещается в корзину, его идентификатор изменяется. Предполагается, что метод item.Recycle() возвращает ClientResult<Guid> с новым идентификатором RecycleBinItem, но возвращенный 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?

Любая помощь была бы высоко оценена!

+0

Это странное поведение, msdn говорит сам за себя, что он должен возвращать действительный GUID «нового элемента в корзине». Вы пытались отладить это? Имеет ли sharepoint файл в корзине после вызова метода? – Tatranskymedved

+0

'.Value', это потому, что guid является' Nullable', или потому что 'newGuid' фактически имеет тип' ClientResult '? – dlatikay

+0

@Tatranskymedved Да, он правильно перерабатывает предмет, несмотря на пустой Guid. Я обновил исходное сообщение, чтобы включить этот бит! – Kuura

ответ

0

Возвращаемое значение функции Recycle представляет собой ClientResult<T>, который является просто оболочкой для модели SOAP-запроса/ответа. Запросы собираются локально и отправляются при вызове ExecuteQuery. Поэтому значения результата будут заполняться только после завершения этого вызова.

Чтобы понять это различие между объектами модели SharePoint и клиентских объектов, необходимо посмотреть на overall concept, поскольку в документации ClientResult он никогда не упоминается.

Смежные вопросы