我已成功地停止通过使用有没有办法停止OnItemSaving事件?
item.Editing.EndEdit(false,true);
然而,这仍然引发OnItemSaving
事件被触发OnItemSaved
事件。有没有办法来禁用这个呢?
我已成功地停止通过使用有没有办法停止OnItemSaving事件?
item.Editing.EndEdit(false,true);
然而,这仍然引发OnItemSaving
事件被触发OnItemSaved
事件。有没有办法来禁用这个呢?
你可以做到这一点使用EventDisabler
:
using (new EventDisabler())
{
item.Editing.BeginEdit();
item.Editing.EndEdit();
}
只是对@Ruud面包车Falier的的答案扩大,值得注意的是,EventDisabler
,像SecurityDisable
,继承从IDisposable
。因此,您可以创建一个属性或局部变量,该属性或局部变量是EventDisabler
,并且在变量或属性初始化之前,Sitecore事件将被禁用,直到调用Dispose()
方法。
例如,在以下类中,从调用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();
}
}
}
辉煌,谢谢! – 2014-08-28 13:24:39