【问题标题】:Creating a multimedia component in Tridion Templating class在 Tridion 模板类中创建多媒体组件
【发布时间】:2013-01-12 10:16:04
【问题描述】:

我正在尝试使用以下代码在 Tridion 模板类中创建一个多媒体组件。

MemoryStream stringInMemoryStream = new MemoryStream(ASCIIEncoding.Default.GetBytes("
<test>testing</test>"));                            
Component xmlMultimediaComponent = new Component(engine.GetSession(), new 
  TcmUri("tcm:21-2008-2"));                
xmlMultimediaComponent.Title = "New MM component";
xmlMultimediaComponent.Schema = new Schema(new TcmUri("tcm:10-6532-8"), 
 engine.GetSession());                
xmlMultimediaComponent.BinaryContent.MultimediaType = new MultimediaType(new 
   TcmUri("tcm:0-36-65544"), engine.GetSession());                                         
xmlMultimediaComponent.BinaryContent.MultimediaType.MimeType = "application/xml";
xmlMultimediaComponent.BinaryContent.MultimediaType.FileExtensions = new List<string> 
   {"xml", "XML"};
xmlMultimediaComponent.BinaryContent.UploadFromStream = stringInMemoryStream;
xmlMultimediaComponent.BinaryContent.Filename = "testing.xml".ToLower();                                    
xmlMultimediaComponent.Save();                
xmlMultimediaComponent.CheckIn(true);

请注意,“tcm:21-2008-2”是必须在其中创建组件的文件夹 TCM ID。 “tcm:10-6532-8”是多媒体模式 ID,“tcm:0-36-65544”是多媒体类型 ID。

但是似乎有一些问题,它失败并出现以下错误:

链接到架构的值无效。 在 Tridion.ContentManager.Utilities.ThrowInvalidLinkException(链接链接,KernelException innerException) 在 Tridion.ContentManager.IdentifiableObject.AssertValidLink(链接链接) 在 Tridion.ContentManager.IdentifiableObject.AssertValidLinks(IEnumerable`1 链接) 在 Tridion.ContentManager.IdentifiableObject.AssertValidLinks() 在 Tridion.ContentManager.IdentifiableObject.OnSaving(SaveEventArgs eventArgs) 在 Tridion.ContentManager.ContentManagement.RepositoryLocalObject.OnSaving(SaveEventArgs eventArgs) 在 Tridion.ContentManager.ContentManagement.VersionedItem.OnSaving(SaveEventArgs eventArgs) 在 Tridion.ContentManager.ContentManagement.Component.OnSaving(SaveEventArgs eventArgs) 在 Tridion.ContentManager.IdentifiableObject.Save(SaveEventArgs eventArgs) 在 Tridion.ContentManager.ContentManagement.VersionedItem.Save(布尔 checkInAfterSave) 在 Tridion.ContentManager.ContentManagement.VersionedItem.Save()

上述错误发生在以下语句xmlMultimediaComponent.Save()

知道如何将 LinkToMultimedia 类型的模式 id 传递给多媒体组件吗?

【问题讨论】:

  • 我想知道发布时创建图像的用例是什么......
  • 对于自定义需求,需要创建xml多媒体组件而不是Image多媒体组件。

标签: tridion


【解决方案1】:

我认为架构 ID 必须包含上下文发布 ID,所以在这种情况下 10-6532-8 应该是 21-6532-8。

谢谢

【讨论】:

  • 是的,你总是必须使用相同的上下文。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 2012-08-03
  • 1970-01-01
  • 2012-09-06
  • 2012-11-20
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多