Sitecore.Context.Database.GetItem() 在 sitecore 事件中不起作用

Sitecore.Context.Database.GetItem() not working in sitecore events

我正在使用 Sitecore 7.0Visual Studio 2013。我想使用事件处理程序在 Sitecore 中创建项目的子项。因此,无论何时创建项目,都会自动添加其子项。为此,我在“item:added”事件上写了一个事件处理程序。

但我收到 NullReferenceException 异常“Exception Details: System.NullReferenceException: Object reference not set to an instance of an object”。

我发现 Database.GetItem() 方法在 Sitecore Events 中不起作用。

Item entryFolderItem = Sitecore.Context.Database.GetItem("/sitecore/content/Site Config/Configuration/Entry Folders Structure");

上述项目存在于 sitecore 中,我也尝试过 ID。但我仍然遇到同样的错误。

我也在事件 item:saved 上尝试了相同的代码,但我仍然遇到同样的错误。

对这个问题有什么建议!!

顺便说一句 here 你可以找到一篇关于事件的好文章。

我试图访问 Sitecore.Context.Database 但它没有用。然后我尝试 MasterDB

     Database masterDb = Sitecore.Configuration.Factory.GetDatabase("master");
   Item entryFolderItem = masterDb.Items["/sitecore/content/Site Config/Configuration/Entry Folders Structure"]

结果很成功。

不要假设您可以获得上下文。此外,使用上下文数据库是错误的,因此使用硬编码的“主”数据库也是错误的。

当您从 EventArgs 中提取项目时,使用那里的 .Database 定义来执行您的操作。

Item eventItem = eventArgs.Parameters[0] as Item;
Database db = eventItem.Database;

这里有更多信息:https://community.sitecore.net/technical_blogs/b/sitecorejohn_blog/posts/repost-intercepting-item-updates-with-sitecore