在Sitecore CMS.NET中递归删除子项

Nic*_*len 1 c# recursion sitecore

我的Sitecore媒体库中有以下结构

图片/部门/子部门/产品/

我想一次删除部门代码中的所有图像.目前我有

Item[] items = database.SelectItems("/sitecore/media library/images/department1//*");            

Sitecore.Data.Engines.DataEngine engine = new Sitecore.Data.Engines.DataEngine(database);

using (new SecurityDisabler())
{
    foreach (Item item in items)
    {
        engine.DeleteItem(item))
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是它只删除了department1的子图像,而下面没有任何内容?

Ale*_*kov 7

DataEngine是一个非常低级的API,不应该没有理由使用它.

同时删除所有子项很容易:

Item department1 = database.GetItem("/ sitecore/media library/images/department1"); department1.DeleteChildren();

这将留下department1项,但其下的所有内容都将被删除.

  • 我还建议在Visual Studio中使用Sitecore Rocks扩展.您可以直接在VS中查看内容树,并通过右键单击内容树中的任意位置并选择查询分析器来执行"命令".本案例中使用的是:从/ sitecore/media library/images/department1/*中删除您也可以使用Item属性,例如[@@ templateid =""]等.祝您好运. (2认同)