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
上尝试了相同的代码,但仍然收到相同的错误。
对这个问题的任何建议!!
顺便说一下,在这里你可以找到一篇关于事件的好文章。
不要假设你可以获得上下文。此外,使用上下文数据库将是错误的,因此使用硬编码的"主"数据库也是错误的。
从事件参数中提取项时,请使用 .从那里定义数据库以执行操作。
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"]
它成功了。