Sitecore检测项目保存在EventDisabler()上下文中

San*_*era 3 asp.net sitecore sitecore6 c#-4.0

在我的sitecore Web应用程序OnItemSaved事件中,我想检测项目是否正在EventDisabler上下文中保存.例如,项目编辑如下所示......

using (new EventDisabler())
{
    item.Editing.BeginEdit();
    // do edits
    item.Editing.EndEdit();
}
Run Code Online (Sandbox Code Playgroud)

在下面的方法中,我想识别在EventDisabler上下文中编辑的项目.

protected void OnItemSaved(object sender, EventArgs args)
{
     // detect EventDisabler() context
}
Run Code Online (Sandbox Code Playgroud)

此外,item.Editing.EndEdit(true);我可以保存一个项目,这意味着它意味着使用EventDisabler上下文.应用它的方式我只想检测EventDisabler().如何检测EventDisabler()?

Mar*_*lak 6

有一个静态属性IsActiveEventDisabler类:

EventDisabler.IsActive
Run Code Online (Sandbox Code Playgroud)

这将true在您每次进入EventDisabler上下文时返回.

您需要记住,当您处于EventDisabler活动上下文时,item:saved不会调用事件(当您调用时也是如此)item.Editing.EndEdit(true).

您可以检查EventDisable.IsActive状态,item:saving它会让您知道状态EventDisabler,但在item:saved事件中检查(如Mark Cassidy注意到的那样)是没有意义的.

  • 非常类似Zen ...虽然可能是真的,但我并不相信在OnItemSaved _event_中检查EventDisabler.Active会有任何意义:-)据我所知,OnItemSaved永远不会被调用事件处于非活动状态. (3认同)