2

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

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

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

4

1 回答 1

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;
  }
}
于 2010-05-13T15:46:37.160 回答