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

本文关键字:sitecore 事件 不起作用 Context Database GetItem Sitecore | 更新日期: 2023-09-27 17:55:27

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

但我得到了NullReferenceException例外"Exception Details: System.NullReferenceException: Object reference not set to an instance of an object"。

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

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

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

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

对这个问题的任何建议!!

顺便说一下,在这里你可以找到一篇关于事件的好文章。

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

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

从事件参数中提取项时,请使用 .从那里定义数据库以执行操作。

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

我试图访问Sitecore.Context.Database但它不起作用。然后我尝试了MasterDB

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

它成功了。