Обновить И Сохранить Папку С Помощью Core Service 2011

  • Автор темы Heestaporwaph67
  • Обновлено
  • 21, Oct 2024
  • #1

Я новичок в основной службе. У меня есть требование обновить схему метаданных папки (из раскрывающегося списка), и при успешном выборе схемы метаданных мне нужно обновить значение поля (схемы метаданных) в папке и сохранить его.

Я могу получить папку и ее значение метаданных, используя папку.MetadataSchema.IdRef.

Попробовал обновить схему метаданных папки с помощьюfolder.MetadataSchema.IdRef = «Идентификатор tcm схемы метаданных»; и при сохранении я получаю следующую ошибку. client.Save(папка, ноль);

«невозможно найти URL/Tridion/схему/папку: метаданные»

Пожалуйста, помогите мне сохранить папку и обновить зависимое поле метаданных.

                    var folder = (FolderData)client.Read(tcmid, new ReadOptions());   

if (folder.MetadataSchema.IdRef.Equals("tcm:0-0-0"))

{ 

var Schema = new LinkToSchemaData();

Schema.IdRef = "tcm:84-2784-8";

folder.Metadata = null;

folder.MetadataSchema = Schema;                           

client.Save(folder, null);                            

}
 

Фрагмент кода:

Heestaporwaph67


Рег
25 Oct, 2024

Тем
75

Постов
187

Баллов
592
  • 26, Oct 2024
  • #2

Попробуйте это:

 
 
 folder.Metadata = fields.ToString();
 

Кроме того, вы можете увидеть дополнительную информацию об этих замечательных методах. ЗДЕСЬ

 

Ha1duk


Рег
01 Dec, 2013

Тем
77

Постов
186

Баллов
601
  • 26, Oct 2024
  • #3

Я думаю, что как минимум вам нужно установить <Metadata xmlns="uuid:<YOUR_VALUE>"></Metadata> to:

folder.Metadata

Проверьте это

//For updating a meta data schema of the Folder: var client = <properly initialized core service client>; var folder= (FolderData)client.Read(<TCM URI of the Folder>, new ReadOptions()); var new Schema = new LinkToSchemaData(); new Schema.IdRef = <TCM URI of the Schema>; folder.Metadata = null; folder.MetadataSchema = newSchema; client.Save(folder, new ReadOptions()); //For updating a meta data fields: schemaFields = client.ReadSchemaFields(folder.MetadataSchema.IdRef, true, DEFAULT_READ_OPTIONS); fields = Fields.ForMetadataOf(schemaFields, folder); // Update Fields Accordingly field[<field name>].Value = <new value>; //Update the metadata folder.Metadata = fields.ToString(); client.Save(folder, DEFAULT_READ_OPTIONS); //Helper Method public static Fields ForMetadataOf(SchemaFieldsData _data, RepositoryLocalObjectData _item) { return new Fields(_data, _data.MetadataFields, _item.Metadata, "Metadata"); }

Правильно ли установлено значение.

Попробуйте жестко запрограммировать строку в качестве проверки.

Вы можете найти свой uuid, открыв схему и просмотрев вкладку источника:

 

Jonasly


Рег
14 Jan, 2011

Тем
73

Постов
209

Баллов
584
Похожие темы Дата
Похожие темы
Автокредит без первоначального взноса: на новый или подержанный автомобиль
Как самому быстро убрать мелкие и глубокие царапины на акриловой ванне
Капучино, Американо или Кока Кола за 1 рубль при покупке от 259 рублей в Макдональдс до 9 января 2022 года
Соединенные Штаты - Платил Ли Уоррен Баффет Более Низкую Ставку Подоходного Налога, Чем Его Секретарь?
Сша - Было Ли Расследование Взлома Электронной Почты Национального Комитета Демократической Партии Проведено Антироссийскими Активистами?
Общение - Как Подойти К Теме Обучения За Границей На Полгода С Работодателем?
Коллеги – Разрешение Неловкой Ситуации С Неуклюжим Коллегой
Рабочий Процесс В Web 8.1 Не Работает
Технологическое Развитие. Как Появление Интеллектуальных Традиций Может Изменить Использование Магии В Моем Мире?
Как Мне Получить Бета-Ридеры?
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно