我有一个要求,我需要将ContentPart焊接到所有内容类型。请指导我编写此代码的最佳位置。
我查看了Orchard源代码,其中InfosetPart与ContentHandlerBase' s激活方法中的所有内容类型进行了焊接。
在InfosetPart焊接机制之后,我创建了一个继承自ContentHandlerBase的类,并且在激活方法中,我放置了一个具有以下条件的断点,该断点一次又一次地被击中(对于一种内容类型不止一次) context.ContentType ==" Page"
我不确定它是否应该是这样的,因为理想情况下它只能达到这个条件一次。
答案 0 :(得分:1)
您实施它的方式是正确的。您的代码会多次执行,因为会为每个内容项调用内容处理程序,而不仅仅是内容类型。这也允许您将零件焊接到仅部分内容项目,而不是所有指定类型的项目。
您写道,您创建了ContentHandlerBase
的子类。您应该使用ContentHandler
作为基类。
下面是一个简单的代码示例,说明应如何做到这一点。
public class MyPartHandler : ContentHandler
{
protected override void Activating(ActivatingContentContext context) {
context.Builder.Weld<MyPart>();
}
}