代码之家  ›  专栏  ›  技术社区  ›  Zooking

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

  •  2
  • Zooking  · 技术社区  · 15 年前

    是否有方法从包含多个部分的模板中获取特定字段名,并将其转换为FieldRenderer控件?

    例如,我有一个包含“数据”和“数据2”部分的模板,两个部分都有一个称为“文本”的文本字段。有没有办法让我的FieldRenderer获取“数据2”部分中的字段“文本”

    如果下面的一个建议有效,那就太好了:

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

    布拉雷

    2 回复  |  直到 11 年前
        1
  •  4
  •   Bartłomiej Mucha    11 年前

    虽然它是这样开发的(我们不希望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];
    

    但现在进行错误检查:)

        2
  •  0
  •   Community CDub    8 年前

    根据官方的SiteCore文档,字段名在各部分中必须是唯一的。

    这也被讨论过 here

    推荐文章