Orchard CMS:ContentPart未在迁移中添加到ContentItem

时间:2015-05-12 02:46:38

标签: orchardcms orchardcms-1.8

我正在尝试在迁移中构建具有以下内容的模块:

    public class XyzzyPartRecord : ContentPartRecord
    {
        public virtual string Plugh { get; set; }
    }

    public class XyzzyPart : ContentPart<XyzzyPartRecord>
    {
        public string Plugh {
            get { return Retrieve( r => r.Plugh ); }
            set { Store( r => r.Plugh, value ); }
        }
    }

    public int Create() {

        SchemaBuilder.CreateTable( "XyzzyPartRecord", table => table
            .ContentPartRecord()
            .Column<string>( "Plugh" )
        );

        ContentDefinitionManager.AlterPartDefinition( "XyzzyPart", cfg => cfg
            .WithDescription( "XyzzyPart" ) );

        ContentDefinitionManager.AlterTypeDefinition( "XyzzyItem", cfg => cfg
            .WithPart( "XyzzyPart" )
        );

        return 1;
    }

访问XyzzyItem时,Parts集合中没有XyzzyPart。而是有一个ContentPart。

如何让我的内容部件允许将其添加到内容项的部件集合中?

1 个答案:

答案 0 :(得分:0)

我忽略了创建驱动程序或处理程序。一旦这些到位,我的代码就按预期工作了。

namespace MyProject.Drivers {

    public class XyzzyPartDriver : ContentPartDriver<XyzzyPart> {

        protected override DriverResult Display( XyzzyPart part, string displayType, dynamic shapeHelper ) {
            return ContentShape( "Parts_Xyzzy",
                () => shapeHelper.Parts_Xyzzy(
                    Xyzzy: part ) );
        }
    }
}

namespace MyProject.Handlers {

    public class XyzzyPartHandler : ContentHandler {

        public XyzzyPartHandler( IRepository<XyzzyPartRecord> repository ) {
            Filters.Add( StorageFilter.For( repository ) );
        }
    }
}