2012-09-27 17 views
7

tôi đã ngoại lệ = { "Không tìm thấy uuid: 5708986b-390f-4728-b0c7-b49bd3d8f407:. Metadata"}Tridion CoreService tạo thành phần thiếu metadata

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); 
} 

nhờ Tridion chuyên gia

Trả lời

12

Bạn đang đi đúng đường dẫn, nhưng lỗi chỉ ra rằng bạn chưa cung cấp các trường Siêu dữ liệu cho thành phần mà bạn đang cố tạo.

Dòng này là không chính xác:

Metadata = schemaData.Metadata 

Nó nên khá nhiều, như thế một trong những nơi bạn tạo các lĩnh vực nội dung:

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

có nhờ Puntero này là đúng, làm thế nào để truy xuất Metadata từ schema cảm ơn lần nữa :) – Lucas

+1

Nếu câu trả lời đúng, bạn nên chấp nhận nó;) –

+0

tôi đang gặp lỗi khác Trình định dạng đã ném một ngoại lệ trong khi cố gắng deserialize thông báo: Đã xảy ra lỗi khi cố gắng deserialize tham số http: //www.sdltridion .com/ContentMan ager/CoreService/2011: deltaData. Thông báo InnerException là 'Đã xảy ra lỗi khi deserializing đối tượng kiểu Tridion.ContentManager.Data.IdentifiableObjectData. Tên không thể bắt đầu bằng ký tự '<', giá trị thập lục phân 0x3C. Dòng 1, vị trí 109. '. Vui lòng xem InnerException để biết thêm chi tiết. – Lucas