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 に答える