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

时间:2010-05-07 21:02:43

标签: 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;
        }
    }
}

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

1 个答案:

答案 0 :(得分:1)

这段代码非常适合我。您确定已将生成的.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;
  }
}