2011 – Как Получить Доступ К Вложенным Полям Встроенной Схемы Во Фрагменте C#.

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

У меня есть три схемы A (Содержимое), B (Встроенный), C (Встроенный)

Схема A имеет поля A1 (текст) и A2 (EmbeddedSchema).

Схема B имеет поля B1 (EmbeddedSchema), B2 (текст).

И

Схема C имеет поля C1(текст) и C2(текст).

Схема B встроена в поле A2, а схема C встроена в поле B1.

 if (pubMetadata.Contains("order_sort"))
{    

foreach (ItemFields docsort in ((EmbeddedSchemaField)pubMetadata["order_sort"]).Values) 

{

//Below code line works 

string docOrder = ((KeywordField)docsort["document_order"])

.Value.Description.ToString();

//Below code line is not working 

string docSortName = ((KeywordField)docsort["doc_sort"])

.Value.Description.ToString();                   

}

}
 

Как получить значение поля C1 в C# TBB/Fragment.

Lihub


Рег
24 Nov, 2019

Тем
64

Постов
177

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

Общая схема такова, что значение EmbeddedSchemaField представляет собой коллекцию ItemFields.

Итак, что-то в этом роде должно работать (я это не проверял)

 ItemFields fields = new ItemFields(Component.Content, Component.Schema);
EmbeddedSchemaField embedded1 = (EmbeddedSchemaField)fields["EmbeddedSchemaFieldName"];
ItemFields embeddedFields = embedded1.Value;
EmbeddedSchemaField embedded2 = (EmbeddedSchemaField)embeddedFields["EmbeddedSchemaField2Name"];
ItemFields embeddedFields2 = embedded2.Value;
 

Обратите внимание на многозначные поля встроенной схемы. Если все остальное не удалось, используйте Расширение DGX от C# строительные блоки.

 

Vaginizmxmix


Рег
10 Feb, 2014

Тем
75

Постов
212

Баллов
587
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно