如果该项目具有任何本地化的依赖项,我已创建了一些禁止删除内容项的代码。为此,我创建了一个新的"扩展"接口和Orchard.Framework.ContentManagement中的(默认)类,然后使用SuppressDependency属性在Orchard.Localization模块中创建一个新类。它返回一个基于查询的简单布尔值,以查看是否有任何ContentItems将当前项列为MasterContentItem
这是从Orchard.Core.Contents中的AdminController调用的,如果它返回true,那么我添加一条消息并重定向到returnUrl,否则删除将继续正常进行。
所有这一切都很完美。
但是,我想重构一下,以便利用IContentManager的现有基础设施,并向LocalizationPartHandler添加一个Removing()方法。
我的问题是 - 是否有可能取消"基于之前调用的ContentHandler输出的删除操作...
答案 0 :(得分:0)
正如我在评论中所提到的,我并不完全确定你想要完成什么,但我的猜测是你要创建自己的模块,并在该模块中创建一个Handler
实现,其中你做你的事......
据我所知,您想要挂钩Remove
事件生命周期。处理程序提供OnRemoving
,在删除项目之前执行。我不是处理程序及其扩展点的专家以及您如何取消该事件,但我的猜测是您要实现以下内容:
public class YourCustomHandler : ContentHandler {
public YourCustomHandler(IYourCancelService yourCancelService) {
OnRemoving<LocalizationPart>((context, part) =>
yourCancelService.CancelRemoveEvent(context));
}
}
阅读本文以获取有关处理程序的更多信息:http://docs.orchardproject.net/Documentation/Understanding-content-handlers