我正在为Tridion 2011 SP1创建.NET TBB。我在组件中有两个字段,其中一个是单值的,另一个是嵌入式模式字段。
要检索单值字段,我使用了
string singlefield= package.GetValue("Component.Fields.singlefield");
但是要参考我使用过的多值字段。
string multi= package.GetValue("Component.Fields.multi.values");
但它没有取得价值。
请帮助一种方法。
答案 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]
是字段索引,但它是可选的