使用Sitecore 8 Update 2
我添加了一些配置和代码,以便在删除项目时捕获事件。我想获得该项目的完整路径,但我能得到的只是[orphan]/{itemName}
(其中{itemName}
是itemName
,但它始终包含文字字符串[orphan]
)。
所以我假设bassicaly,当我得到事件时,项目已被删除,我再也无法获得路径了?还有其他方法可以在项目被删除时获取项目的路径吗?
配置:
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<events>
<event name="item:deleted">
<handler type="be.absi.kbs.web.Helpers.Processors.SaveItemActions, be.absi.kbs.web" method="OnItemDeleted" patch:before="*[@type='Sitecore.Links.ItemEventHandler, Sitecore.Kernel']" />
</event>
</events>
</sitecore>
</configuration>
代码:
public class SaveItemActions : PublishItemProcessor // Multi purpose class, catches saves, publishes, etc..
{
protected void OnItemDeleted(object sender, EventArgs args)
{
Item item = Event.ExtractParameter(args, 0) as Item;
if (isValidItem(item))
{
ItemActionDAO.Insert(CreateItemAction("Deleted", item), item);
}
}
}
答案 0 :(得分:4)
向item:deleting
事件添加新处理程序:
<events>
<event name="item:deleting">
<handler type="My.Assembly.Namespace.ItemEventHandler, My.Assembly" method="OnItemDeleting" />
</event>
</events>
代码:
public class ItemEventHandler
{
public void OnItemDeleting(object sender, EventArgs args)
{
if (args != null)
{
var item = Event.ExtractParameter(args, 0) as Item;
Assert.IsNotNull(item, "No item in parameters");
string path = item.Paths.FullPath;
}
}
}
答案 1 :(得分:3)
您绑定到已删除项目后删除的事件。您可能希望在事件模型中更早地绑定(例如,按照@Marek Musielak的建议删除&#39;)以获取您需要的信息。
请注意,在删除事件和删除事件之间不能删除项目,因为侦听事件的操作可能会导致删除失败。因此,请确保您只捕获所需的数据,并仍然收听已删除的事件,以了解该项目何时实际被删除。