Использование SharePoint 2010 RC У меня возникают проблемы при отмене удаления элемента списка с помощью приемников событий. Мой код запускается, устанавливает свойство cancel объекта SPItemEventProperties, устанавливает сообщение об ошибке и возвращает ошибку обратно в вызывающий поток. Этот подход прекрасно работает в методах добавления / обновления, однако при использовании в методе удаления я могу наблюдать за тем, как код запускается в отладчике, но элемент по-прежнему перемещается в мусорную корзину сайта.
Кроме того, я наблюдаю такое поведение на сайте, созданном из шаблона "CMSPUBLISHINGSITE # 2" из stsadm, но не на сайте, созданном из шаблона "Сайт группы" через центр администрирования.
Код неправильного поведения следует:
public override void ItemDeleting(SPItemEventProperties properties)
{
if (!(properties.UserLoginName == "SHAREPOINT\\system"))
{
try
{
throw new CreatorIdAliasingException("Please contact support if you feel a release web site has been inappropriately assigned to your organization.");
}
catch (CreatorIdAliasingException ex)
{
properties.Cancel = true;
properties.ErrorMessage = ex.ToString();
properties.InvalidateListItem();
throw;
}
}
}
Для справки, идентичный код содержится в методе ItemAdding и работает как положено.
public override void ItemAdding(SPItemEventProperties properties)
{
base.ItemAdding(properties);
if (!(properties.UserLoginName == "SHAREPOINT\\system"))
{
try
{
throw new InvalidCreatorIdException("Please contact support to add a known URL to your list of release web sites.");
}
catch (InvalidCreatorIdException ex)
{
properties.Cancel = true;
properties.ErrorMessage = ex.ToString();
properties.InvalidateListItem();
throw;
}
}
}