2

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

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

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

但要引用我使用过的多值字段。

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

但它没有获取值。

请帮助一种方法。

4

2 回答 2

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;
        }
    }
}
于 2012-03-15T13:59:01.863 回答
0

你应该这样做:

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

whereemb是组件模式中字段的名称,并且multi是可嵌入模式中的多值字段。[0]是字段索引,但它是可选的

于 2012-03-15T12:34:41.907 回答