2014-08-28 3 views

답변

3

당신은 EventDisabler 사용하여 해당 수행 할 수 있습니다

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

여기에서 찾을 수는 : Temporarily disable events through the Sitecore API 그냥 @Ruud 반 Falier의 대답에 확장

+0

감사합니다. –

0

, 그것은 상속의 SecurityDisable처럼 EventDisabler 것을 주목할 필요가있다 IDisposable. 따라서 EventDisabler 인 속성 또는 로컬 변수를 만들 수 있으며 Dispose() 메서드가 호출 될 때까지 변수 또는 속성이 초기화되는 순간부터 Sitecore 이벤트가 비활성화됩니다.

예를 들어, 다음 클래스에서는 Bar() 메서드가 호출 될 때까지 Foo() 메서드가 호출 된 시점부터 이벤트가 비활성화됩니다.

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(); 
     } 
    } 
}