代码之家  ›  专栏  ›  技术社区  ›  Soldarnal

防止在Umbraco中删除包含子节点的内容

  •  2
  • Soldarnal  · 技术社区  · 16 年前

    如果内容节点有任何子节点,我希望防止它们被丢弃。我设置了一个这样的事件处理程序:

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

    然而,这似乎不起作用。我认为这是因为删除过程在处理父节点(然后没有子节点)之前先将子节点移动到垃圾桶中。还有其他可能的解决方案吗?还是我在上面犯了一个简单的错误?

    1 回复  |  直到 16 年前
        1
  •  1
  •   sebastiaan    16 年前

    这个代码对我来说非常有效。是否确定已将生成的.dll文件复制到Umbraco的/bin文件夹中?

    我只是写得比你短了一点,如下所示,但是功能应该完全相同。

    我注意到childnode的文档 似乎 要被删除(它从树中消失),但当您重新加载树时,节点仍然存在。

    public class KeepSafeEvents : ApplicationBase
    {
      public KeepSafeEvents()
      {
        Document.BeforeMoveToTrash += Document_BeforeMoveToTrash;
      }
    
      void Document_BeforeMoveToTrash(Document sender, MoveToTrashEventArgs e)
      {
        if (sender.HasChildren)
          e.Cancel = true;
      }
    }