【问题标题】:Tridion CoreService create component missing metadataTridion CoreService 创建组件缺少元数据
【发布时间】:2012-09-19 11:04:02
【问题描述】:

我得到了异常 = {“无法找到 uuid:5708986b-390f-4728-b0c7-b49bd3d8f407:元数据。”}

schemaId = UpdatePubId(schemaId, containerId);
SchemaData schemaData = (SchemaData)client.Read(schemaId, null);
string xml = string.Format("<{0} xmlns=\"{1}\">{2}</{0}>", schemaData.RootElementName, schemaData.NamespaceUri, fields);

ComponentData componentData = new ComponentData
{
    Content = xml,
    ComponentType = ComponentType.Normal,
    Title = title,
    Schema = new LinkToSchemaData { IdRef = schemaId },
    LocationInfo = new LocationInfo { OrganizationalItem = new LinkToOrganizationalItemData { IdRef = containerId } },
    Id = "tcm:0-0-0", 
    MetadataSchema = schemaData.MetadataSchema,
    Metadata = schemaData.Metadata
};

try
{
    componentData = client.Save(componentData, new ReadOptions()) as ComponentData;
    componentData = client.CheckIn(componentData.Id, new ReadOptions()) as ComponentData;
    message.Set("Component", title + ", successfully");
}
catch (Exception exception)
{
    message.Set("Component", exception.Message);
}

感谢 Tridion 专家

【问题讨论】:

    标签: metadata tridion


    【解决方案1】:

    您在正确的路径上,但错误表明您没有为您尝试创建的组件提供元数据字段。

    此行不正确:

    Metadata = schemaData.Metadata
    

    它应该很像您创建内容字段的那个:

    Metadata = String.Format("<Metadata xmlns=\"{0}\">{1}</Metadata>",schemaData.NamespaceUri, "YOUR METADATA XML")
    

    【讨论】:

    • 是的,感谢 Puntero,这是正确的,再次感谢如何从架构中检索元数据 :)
    • 我收到另一个错误格式化程序在尝试反序列化消息时抛出异常:尝试反序列化参数sdltridion.com/ContentManager/CoreService/2011:deltaData 时出错。 InnerException 消息是“反序列化 Tridion.ContentManager.Data.IdentifiableObjectData 类型的对象时出错。名称不能以“
    • 检查您用于创建元数据和内容字段的字符串,您在某处缺少“>”;)
    • 我应该在创建组件之前进行 xhtml 验证 :)
    • 使用 Tidy.NET 在此处查看示例:nunolinhares.blogspot.com/2011/06/…
    猜你喜欢
    • 2012-09-11
    • 1970-01-01
    • 2021-09-23
    • 2012-08-22
    • 2012-08-16
    • 1970-01-01
    • 2012-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多