2010-05-07 2 views
2

콘텐츠 노드가 자식이있는 경우 휴지통에 들어가는 것을 방지하고 싶습니다. 다음과 같은 이벤트 처리기를 설정했습니다.umbraco에서 자식 노드가있는 콘텐츠가 삭제되지 않도록하십시오.

public class KeepSafeEvents : ApplicationBase 
{ 
    public KeepSafeEvents() 
    { 
     Document.BeforeMoveToTrash += new Document.MoveToTrashEventHandler(Document_BeforeMoveToTrash); 
    } 

    void Document_BeforeMoveToTrash(Document sender, umbraco.cms.businesslogic.MoveToTrashEventArgs e) 
    { 
     if (sender.HasChildren) 
     { 
      e.Cancel = true; 
     } 
    } 
} 

그러나 이것은 작동하지 않는 것 같습니다. 부모 노드 (자식 노드가없는 노드)를 처리하기 전에 delete 프로세스가 자식 노드를 먼저 휴지통으로 이동하기 때문에 그것이 원래 가정합니다. 다른 가능한 해결책이 있습니까? 아니면 위의 간단한 실수를하고 있습니까?

답변

1

이 코드는 완벽하게 작동합니다. 결과 .dll 파일을 Umbraco의/bin 폴더에 복사 했습니까?

필자가 작성한 것보다 조금 짧게 작성했지만 기능은 완전히 동일해야합니다.

나는 자식 노드가 인 문서가으로 보이고 트리에서 사라지지만 (트리에서 사라짐) 트리를 다시로드하면 노드가 여전히 있음을 알 수 있습니다.

public class KeepSafeEvents : ApplicationBase 
{ 
    public KeepSafeEvents() 
    { 
    Document.BeforeMoveToTrash += Document_BeforeMoveToTrash; 
    } 

    void Document_BeforeMoveToTrash(Document sender, MoveToTrashEventArgs e) 
    { 
    if (sender.HasChildren) 
     e.Cancel = true; 
    } 
} 
+0

그래, 맞아요. 코드가 삭제를 막는 데 효과적입니다. 애니메이션이 멈추지 않습니다. 나는 umbraco 프로젝트에 버그를 입력했습니다. – Soldarnal