有没有办法阻止OnItemSaving事件?

时间:2014-08-28 09:41:22

标签: c# sitecore sitecore6 sitecore7

我设法通过使用

停止触发OnItemSaved个事件
item.Editing.EndEdit(false,true);

然而,这仍会触发OnItemSaving个事件。有没有办法禁用它?

2 个答案:

答案 0 :(得分:3)

您可以使用EventDisabler

执行此操作
using (new EventDisabler())
{
    item.Editing.BeginEdit();
    item.Editing.EndEdit();
}

在此处找到:Temporarily disable events through the Sitecore API

答案 1 :(得分:0)

为了扩展@Ruud van Falier的答案,值得注意的是,EventDisablerSecurityDisable一样,继承自IDisposable。因此,您可以创建一个EventDisabler的属性或局部变量,并且从变量或属性初始化到调用Dispose()方法的那一刻起,Sitecore事件将被禁用。

例如,在以下类中,从调用Foo()方法到调用Bar()方法的时间之前,将禁用事件。

public class SomeClass 
{
    private EventDisabler _eventDisabler;

    ...

    public void ToggleEventDisabler(bool eventDisablerOn)
    {
        _eventDisabler = eventDisablerOn ? new EventDisabler() : null;
    }

    public void Foo() 
    {
        ToggleEventDisabler(true); //turn on the event disabler

        ...do stuff...
    }

    public void Bar() 
    {
        ...do stuff...

        if (_eventDisabler != null) 
        {
            _eventDisabler.Dispose();
        }
    }
}