在我的Sitecore 6.1.0安装中,我通过实现自己的自定义处理程序来挂接“item:added”事件,方法如下(在Web.config中):
这是为了强制要求项目具有唯一名称 - 换句话说,在我的OnItemAdded方法中,我想要通过Lucene搜索查找与正在添加的项目具有相同名称的任何其他项目。每当在Sitecore结构中添加项目时,都会调用OnItemAdded方法。但我的问题是 - 该方法对于每个项目被调用多次。根据我添加项目的Sitecore结构位置不同,它被调用的次数在6到26之间变化。我的OnItemAdded方法主体为空:
为什么会在完整路径上添加[孤儿]位?为什么即使我只添加一个项目,OnItemAdded方法也会被调用多次?
<event name="item:added">
<handler type="Sitecore.Data.Fields.ItemEventHandler, Sitecore.Kernel" method="OnItemAdded" />
<handler type="my.project.Classes.OnSaveItemHandler, my.project" method="OnItemAdded" />
</event>
这是为了强制要求项目具有唯一名称 - 换句话说,在我的OnItemAdded方法中,我想要通过Lucene搜索查找与正在添加的项目具有相同名称的任何其他项目。每当在Sitecore结构中添加项目时,都会调用OnItemAdded方法。但我的问题是 - 该方法对于每个项目被调用多次。根据我添加项目的Sitecore结构位置不同,它被调用的次数在6到26之间变化。我的OnItemAdded方法主体为空:
protected void OnItemAdded(object obj, EventArgs args)
{
}
当添加一个项目时,第一次调用该方法时,args
参数中的项目是正确的。如果项目名称为theItemName
,则FullPath属性将如下所示:
/sitecore/content/theItemName
除了第一个之外,每次该项目看起来都是正确的,但该项目的路径看起来像这样:
[orphan]/sitecore/content/theItemName
为什么会在完整路径上添加[孤儿]位?为什么即使我只添加一个项目,OnItemAdded方法也会被调用多次?