FieldRenderer - 从不同的模板部分获取特定的字段名称

时间:2010-03-10 13:56:18

标签: sitecore sitecore6

有没有办法从具有多个部分的模板中获取特定字段名称到FieldRenderer控件?

F.ex。我有一个模板,其中包含“数据”和“数据2”部分,两者都有一个名为“文本”的单文本字段。有没有办法让我的FieldRenderer在“Data2”

部分中获取字段“Text”

如果以下建议之一奏效,那就太好了:

<sc:FieldRenderer ID="test" runat="server" FieldName="Text" Section="Data2" />

<sc:FieldRenderer ID="test" runat="server" FieldName="Data2/Text" />

BR Larre

2 个答案:

答案 0 :(得分:4)

虽然它是故意这样开发的(我们不希望Sitecore开发人员在部门名称上浪费时间),但我认为包含这样的东西确实有意义。 让我将其列为功能请求。

如果您想知道这项工作正确,您应该首先了解fieldRenderer的工作方式。它启动了一个名为'renderField'的管道。 在第二步中,它正在读取fieldvalue:

用你自己的自定义类替换那个类似的东西:

public void Process(RenderFieldArgs args)
{
    Assert.ArgumentNotNull(args, "args");
    if(args.RawParameters.Contains("Section"))
    {
        //Parse args.RawParameters
        //Extract Section data
        //Take args.Item.Template
        //Resolve section
        //Resolve fieldvalue
        //Set this field value as args.Results.FirstPart
    }
    if (!string.IsNullOrEmpty(args.FieldValue))
    {
        args.Result.FirstPart = args.FieldValue;
    }
    else
    {
        args.Result.FirstPart = args.Item[args.FieldName];
    }
}

以下内容:

args.Result.FirstPart = args.Item[args.Item.Template.GetSection("sectionName").GetField(args.FieldName).ID];

但现在有错误检查:)

答案 1 :(得分:0)

根据官方Sitecore文档,字段名称必须在各个部分中唯一。

还讨论了here