以前の投票データをサイトコア ソリューションにインポートしようとしています。インポートの一部として、投票用に既に設定したマスター ページに基づいてデータを保持する新しいサイトコア アイテムを作成しようとしています。このマスターには、その下にいくつかのデフォルト アイテムが設定されています。従来のポーリング データを追加する前に、いくつかの特定のデフォルト アイテムを削除したいと考えています。しかし、item.DeleteChildren() を使用してデフォルト アイテムの 1 つを削除しようとすると、サイトコア カーネルでNullReferenceException
スローされます。Sitecore.Tasks.ItemEventHandler.OnItemDeleted(Object sender, EventArgs args)
誰かがこれを引き起こしている可能性のある考えを持っているなら、私はそれを感謝します. サイトコア バージョン 5.3.2 を使用しています。
これは、マスターに基づいてアイテムを作成/編集しようとするために使用しているコードです。作成はすべて完全に機能します。機能しないのは DeleteChildren() 呼び出しです。
Guid LegacyPollFolderGuid = new Guid("8AE89A44-9DCD-4AC2-B0F3-DD438188A575");
Guid QuizOMaticMasterGuid = new Guid("74B95ABF-1898-4870-8B4F-50AF0078AE22");
var master = Sitecore.Configuration.Factory.GetDatabase("master");
var root = master.GetItem(new Sitecore.Data.ID(LegacyPollFolderGuid));
var quizMasterTemplate = master.Masters[new Sitecore.Data.ID(QuizOMaticMasterGuid)];
var quizPage = root.Add("Test Quiz", quizMasterTemplate);
if (quizPage != null)
{
var quiz = quizPage.Children["Column One"].Children["QuizOMatic"];
if (quiz != null)
{
var questionFolder = quiz.Children["Questions"];
var questionTemplate = questionFolder.Children[0].Template;
var resultsFolder = quiz.Children["Results"];
var linksFolder = quiz.Children["Links"];
using (new Sitecore.SecurityModel.SecurityDisabler())
{
questionFolder.DeleteChildren();
}
}