2010-03-10 68 views
2

有没有一种方法可以将具有多个部分的模板的特定字段名称获取到FieldRenderer控件?FieldRenderer - 从不同模板部分获取特定字段名称

F.ex.我有一个包含“数据”和“数据2”部分的模板,都有一个名为“文本”的单一文本字段。有没有办法让我的FieldRenderer获得部分“数据2”领域“文本”

这将是很好,如果的以下建议之一工作:

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

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

BR Larre

回答

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]; 

但现在用错误检查:)

+0

在我们的项目中,我们已经超载Sitecore的用户控件,以便将这个代码将在公园散步。谢谢Alex。 – Zooking 2010-03-10 21:51:00

0

每官方坐ecore文档,字段名称在各个章节中都必须是唯一的。

这还讨论here