我设法通过使用
停止触发OnItemSaved
个事件
item.Editing.EndEdit(false,true);
然而,这仍会触发OnItemSaving
个事件。有没有办法禁用它?
答案 0 :(得分:3)
您可以使用EventDisabler
:
using (new EventDisabler())
{
item.Editing.BeginEdit();
item.Editing.EndEdit();
}
答案 1 :(得分:0)
为了扩展@Ruud van Falier的答案,值得注意的是,EventDisabler
与SecurityDisable
一样,继承自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();
}
}
}