2010-03-10 3 views
2

Есть ли способ получить определенное имя поля из шаблона с несколькими разделами в элемент управления FieldRenderer?FieldRenderer - Получить конкретное имя поля из разных разделов шаблона

F.ex. У меня есть шаблон с разделами «Данные» и «Данные2», оба имеют однотекстовое поле «Текст». Есть ли способ, чтобы сделать мой FieldRenderer получить поле «Текст» в разделе «data2»

Было бы хорошо, если бы один из приведенных ниже предложений работали:

<sc:FieldRenderer ID="test" runat="server" FieldName="Text" Section="Data2" /> 

<sc:FieldRenderer ID="test" runat="server" FieldName="Data2/Text" /> 

BR Ларе

ответ

4

Хотя это разработанные специально для этого (мы не хотим, чтобы разработчики Sitecore тратили время на имена разделов), я думаю, что имеет смысл включить такую ​​вещь. Позвольте мне перечислить это как запрос функции.

Если вы хотите знать это правильно, вы должны сначала понять, как работает fieldRenderer. Он запускает трубопровод под названием «renderField». На втором этапе этого, он читает fieldvalue:

Replace, что один с собственным пользовательским классом что-то вроде этого:

public void Process(RenderFieldArgs args) 
{ 
    Assert.ArgumentNotNull(args, "args"); 
    if(args.RawParameters.Contains("Section")) 
    { 
     //Parse args.RawParameters 
     //Extract Section data 
     //Take args.Item.Template 
     //Resolve section 
     //Resolve fieldvalue 
     //Set this field value as args.Results.FirstPart 
    } 
    if (!string.IsNullOrEmpty(args.FieldValue)) 
    { 
     args.Result.FirstPart = args.FieldValue; 
    } 
    else 
    { 
     args.Result.FirstPart = args.Item[args.FieldName]; 
    } 
} 

Что-то в строке:

args.Result.FirstPart = args.Item[args.Item.Template.GetSection("sectionName").GetField(args.FieldName).ID]; 

Но теперь с проверкой ошибок:

+0

В нашем проекте мы уже перегружать Sitecore UserControls поэтому добавление этого кода будет прогулкой в ​​парке. Спасибо, Алекс. – Zooking

0

За официальное сидение ecore Documentation, имена полей должны быть уникальными для разных разделов.

Это также обсуждался here