有没有办法停止OnItemSaving事件

本文关键字:OnItemSaving 事件 有没有 | 更新日期: 2023-09-27 18:19:59

我已经设法阻止了通过使用触发的OnItemSaved事件

item.Editing.EndEdit(false,true);

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

有没有办法停止OnItemSaving事件

您可以使用EventDisabler:

using (new EventDisabler())
{
    item.Editing.BeginEdit();
    item.Editing.EndEdit();
}

此处找到:通过Sitecore API 暂时禁用事件

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

例如,在下面的类中,从调用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();
        }
    }
}