使用Umbraco 5.1的流畅API以编程方式创建新媒体类型

时间:2012-05-04 06:33:56

标签: umbraco umbraco5

使用Umbraco 5.1 API, 我可以使用下面的代码创建一个新的内容类型(用于在内容选项卡下创建内容节点)。

 // create content type
var typeBuilder = context.Hive.Cms().NewContentType("testType", "Test Type")
            .Define("value", "contentPicker", "Content")
            .Commit();

// create content node
var packageNode = context.Hive.Cms().NewRevision(packageNodeName, packageNodeName, "testType");
        packageNode.SetUploadedFile("value", postedFile);            
        packageNode.Publish();
        packageNode.Commit();

但有没有办法使用流畅的API创建媒体节点?我需要在媒体选项卡树中创建一个具有自定义类型的新自定义媒体节点。 我尝试了以下方法,但它们似乎都没有工作

1) context.Hive.Cms().NewRevision();
2) context.Hive.Cms<IMediaStore>().NewRevision();
3) builderStep.NewRevision<Media, IMediaStore>();
4) builderStep.NewRevision<TypedEntity, IMediaStore>();

1 个答案:

答案 0 :(得分:0)

这样可行,但生成的媒体类型不完整,因为当我尝试使用此类型手动创建媒体时,它会引发错误“应该指定名称”。

CmsBuilderStep<IMediaStore> builderStep = new CmsBuilderStep<IMediaStore>(context.Hive);
var typeBuilder = builderStep.NewMediaType<EntitySchema, IMediaStore>("testType")                   
               .Define("package", "uploader", "General Properties")
               .Commit();

最后,我决定手动创建媒体类型,并使用以下代码通过代码

创建媒体项目
        // Creating a new Media item using the scorm package zip file.
        var packageNode = context.Hive.Cms<IContentStore>().NewRevision(packageNodeName, packageNodeName, "testType")
        .SetUploadedFile("package", postedFile)

        // set parent to media root folder - this is what makes it come under media tree
        .SetParent(FixedHiveIds.MediaVirtualRoot)
        .Publish()
        .Commit();