2

使用 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();

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

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

1 回答 1

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();
于 2012-05-09T09:05:01.800 回答