【问题标题】:Looping through a multivalued field and embedded schema field in .NET Assembly TBB循环遍历 .NET Assembly TBB 中的多值字段和嵌入式模式字段
【发布时间】:2012-03-15 11:31:50
【问题描述】:

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

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

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

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

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

但它没有获取值。

请帮忙解决一下。

【问题讨论】:

  • 你的嵌入字段是多值字段吗?

标签: tridion


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    你应该这样做:

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

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

    【讨论】:

    • @muzimil 如果您确定字段中没有逗号,您可能会得到字段值Component.Fields.emb.multi,然后用逗号分隔它,但恐怕唯一的另一种方法是读取组件的内容,然后解析 XML
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-15
    • 1970-01-01
    • 2011-02-06
    相关资源
    最近更新 更多