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

防止在umbraco中删除包含子节点的内容,umbraco,Umbraco,如果内容节点有子节点,我想防止它们被丢弃。我设置了一个事件处理程序,如下所示: public class KeepSafeEvents : ApplicationBase { public KeepSafeEvents() { Document.BeforeMoveToTrash += new Document.MoveToTrashEventHandler(Document_BeforeMoveToTrash); } void Document

如果内容节点有子节点,我想防止它们被丢弃。我设置了一个事件处理程序,如下所示:

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

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

这段代码对我来说非常适合。是否确实已将生成的.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;
  }
}

是的,你是对的,代码可以防止删除;动画不会停止。我在umbraco项目中输入了一个bug。