循环遍历.NET程序集TBB中的多值字段和嵌入式架构字段

时间:2012-03-15 11:31:51

标签: tridion

我正在为Tridion 2011 SP1创建.NET TBB。我在组件中有两个字段,其中一个是单值的,另一个是嵌入式模式字段。

要检索单值字段,我使用了

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

但是要参考我使用过的多值字段。

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

但它没有取得价值。

请帮助一种方法。

2 个答案:

答案 0 :(得分:7)

我不会将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;
        }
    }
}

答案 1 :(得分:0)

你应该这样做:

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

其中emb是组件架构中字段的名称,multi是嵌入式架构中的多值字段。 [0]是字段索引,但它是可选的