2013-10-03 3 views
3

내 Sitecore 웹 응용 프로그램의 OnItemSaved 이벤트에서 항목이 EventDisabler 컨텍스트에 저장되는지 여부를 감지하려고합니다. 아래 그림과 같은 예를 들어, 항목이 나는 항목이 EventDisabler 컨텍스트에서 편집 확인하려면 아래의 방법은 ...Sitecore가 EventDisabler() 컨텍스트에서 항목 저장을 감지 함

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

을 편집됩니다.

protected void OnItemSaved(object sender, EventArgs args) 
{ 
    // detect EventDisabler() context 
} 

는 또한 항목 내가 interanlly EventDisabler 컨텍스트를 사용하는 것을 의미하는 것 같아요 item.Editing.EndEdit(true);로 저장할 수 있습니다. 어떤 식 으로든 적용됩니다. 그냥 EventDisabler()를 감지하려고합니다. EventDisabler()를 어떻게 찾을 수 있습니까?

답변

6

EventDisabler 클래스의 정적 속성 IsActive 있습니다 :

EventDisabler.IsActive 

true 당신이 EventDisabler 컨텍스트에있는 모든 시간을 반환합니다.

는 당신은 EventDisabler 활성 컨텍스트에있을 때 당신이 item.Editing.EndEdit(true)를 호출 할 때, item:saved 이벤트가 (같은 호출되지 않습니다 것을 기억해야

.

당신은 item:savingEventDisable.IsActive 상태를 확인할 수 있으며, 그것은 당신이 알려 드릴 것입니다 EventDisabler의 상태,하지만 ( Mark Cassidy 눈치로) item:saved 이벤트에서 이것을 확인은 무의미하다.

+3

매우 젠 - 같은 ..., 나는 확신하지 아마도 사실이야하면서 있다는 OnItemSaved _event_ 차종 내부의 EventDisabler.Active 확인 어떤 감각 그러나 :-) 내가 아는 한, OnItemSaved 결코 이벤트를 비활성 상태로 호출했습니다. –

+0

하여 (새로운 Sitecore.Data.Events.EventDisabler()) 하여 (새로운 Sitecore.SecurityModel.SecurityDisabler()) { \t .... \t item.Editing.EndEdit(); } 그러나 OnItemSaved 이벤트에서 'EventDisabler.IsActive'는 false입니다. 나는 또한 두 문을 사용하여 스와핑을 시도했다. –

+0

@MarkCassidy 당신이 옳습니다. 'item : saved' 이벤트는'EventDisabler'가 활성화 될 때 호출되지 않습니다. 답변이 업데이트되었습니다. –