Цикл многозначного поля и поля встроенной схемы в .NET Assembly TBB - PullRequest
2 голосов
/ 15 марта 2012

Я работаю над созданием .NET TBB для Tridion 2011 SP1.У меня есть два поля в компоненте, где одно однозначное, а другое - встроенное поле схемы.

Чтобы извлечь однозначное поле, я использовал

string singlefield= package.GetValue("Component.Fields.singlefield"); 

, но для ссылки на многозначное поле яиспользовали.

string multi= package.GetValue("Component.Fields.multi.values"); 

Но значения не извлекаются.

Пожалуйста, помогите как это сделать.

Ответы [ 2 ]

7 голосов
/ 15 марта 2012

Я бы не использовал package.GetValue для любого значения в компоненте.Вместо этого используйте что-то вроде этого:

// Get the component
Component c = (Component)engine.GetObject(package.GetByName(Package.ComponentName));
// Get the fields
ItemFields fields = new ItemFields(c.Content, c.Schema);
// get our Embedded schema field
EmbeddedSchemaField emb = (EmbeddedSchemaField)fields["emb"];
// Loop
foreach (ItemFields embeddedfields in emb.Values)
{
    foreach (ItemField field in embeddedfields)
    {
        var tField = field as TextField;
        if (tField != null)
        {
            string something = tField.Value;
        }
    }
}
0 голосов
/ 15 марта 2012

Вы должны сделать что-то вроде этого:

package.GetValue("Component.Fields.emb.multi[0]");

Где emb - это имя поля в схеме компонента, а multi - это поле с несколькими значениями из вашей встраиваемой схемы. [0] это индекс поля, но это необязательно

...