.net 获取Sitecore项目删除的完整路径
使用Sitecore 8更新2 我添加了一些配置和代码来捕获删除项目时的事件。我想获得项目的完整路径,但我只能得到.net 获取Sitecore项目删除的完整路径,.net,events,sitecore,.net,Events,Sitecore,使用Sitecore 8更新2 我添加了一些配置和代码来捕获删除项目时的事件。我想获得项目的完整路径,但我只能得到[orphan]/{itemName}(其中{itemName}是itemName,但它始终包含文本字符串[orphan]) 因此,我基本上假设,当我获取事件时,该项已经被删除,并且我无法再获取路径?是否有其他方法可以在删除项目时获取该项目的路径 配置: 代码: 公共类SaveItemActions:PublishItemProcessor//多用途类,捕获保存、发布等。。 {
[orphan]/{itemName}
(其中{itemName}
是itemName
,但它始终包含文本字符串[orphan]
)
因此,我基本上假设,当我获取事件时,该项已经被删除,并且我无法再获取路径?是否有其他方法可以在删除项目时获取该项目的路径
配置:
代码:
公共类SaveItemActions:PublishItemProcessor//多用途类,捕获保存、发布等。。
{
已删除的受保护的void(对象发送方、事件args args)
{
Item Item=Event.ExtractParameter(args,0)作为项;
if(isValidItem(项目))
{
插入(CreateItemAction(“已删除”,项),项);
}
}
}
您将绑定到删除项目后发生的已删除事件。您可能希望在事件模型的早期绑定(例如@Marek Musielak建议的“deleting”)以获取所需的信息
请注意,在删除事件和删除之间可能不会删除项目,因为侦听该事件的操作可能会导致删除失败。因此,请确保您只捕获了所需的数据,并且仍在收听已删除事件,以了解该项目何时实际被删除。您将绑定到删除该项目后发生的已删除事件。您可能希望在事件模型的早期绑定(例如@Marek Musielak建议的“deleting”)以获取所需的信息
请注意,在删除事件和删除之间可能不会删除项目,因为侦听该事件的操作可能会导致删除失败。因此,请确保您只捕获了所需的数据,并且仍在收听已删除事件,以了解项目实际已被删除的时间。将新处理程序添加到
项目:删除事件:
和代码:
公共类ItemEventHandler
{
public void onItemDeleteing(对象发送方、事件参数)
{
如果(args!=null)
{
var item=Event.ExtractParameter(args,0)作为项;
IsNotNull(项,“参数中没有项”);
字符串路径=item.path.FullPath;
}
}
}
将新处理程序添加到项目:删除事件:
和代码:
公共类ItemEventHandler
{
public void onItemDeleteing(对象发送方、事件参数)
{
如果(args!=null)
{
var item=Event.ExtractParameter(args,0)作为项;
IsNotNull(项,“参数中没有项”);
字符串路径=item.path.FullPath;
}
}
}
item:deleting
event?您是否尝试过item:deleting
event?似乎我确实需要这个解决方案。但是如果我没有弄错的话,在我的自定义代码被其他处理程序运行之后,删除过程仍然可以中止吗?如果是这样的话,我还需要一种方法来捕捉这一点。编辑:我已经按照杰伊的建议把这两个组合起来了。将id和路径保存在删除事件的stati字典中,并在删除的事件中获取。您还可以将其保存到Sitecore.Context.Items,它仅在请求/事件管道执行期间处于活动状态。似乎我确实需要此解决方案。但是如果我没有弄错的话,在我的自定义代码被其他处理程序运行之后,删除过程仍然可以中止吗?如果是这样的话,我还需要一种方法来捕捉这一点。编辑:我已经按照杰伊的建议把这两个组合起来了。将id和路径保存在删除事件的stati字典中,并在删除的事件中获取它。您还可以将其保存到Sitecore.Context.Items,它仅在请求/事件管道执行期间处于活动状态。