2010-03-10 1 views
2

Existe-t-il un moyen d'obtenir un nom de champ spécifique à partir d'un modèle avec plusieurs sections à un contrôle FieldRenderer?FieldRenderer - Récupère un nom de champ spécifique à partir de différentes sections de modèle

Fex. J'ai un modèle avec les sections "Data" et "Data2", les deux ont un seul champ de texte appelé "Texte". Y at-il un moyen de faire mon FieldRenderer obtenir le champ « Texte » dans la section « Data2 »

Ce serait bien si l'une des suggestions ci-dessous travaillé:

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

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

BR Larre

Répondre

4

Bien qu'il soit développé comme ça à dessein (nous ne voulons pas que les développeurs de Sitecore perdent du temps sur les noms de section), je pense qu'il est logique d'inclure une telle chose. Permettez-moi de lister ceci comme une demande de fonctionnalité.

Si vous voulez que cela fonctionne correctement, vous devez d'abord comprendre le fonctionnement de fieldRenderer. Il lance un pipeline appelé «renderField». Dans la deuxième étape de ce fait, il lit le fieldvalue:

Remplacer celui-là avec votre propre classe personnalisée avec quelque chose comme ceci:

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

Quelque chose dans la ligne de:

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

Mais maintenant avec des contrôles d'erreur :)

+0

Dans notre projet, nous dépassons déjà les usercontrols de Sitecore afin d'ajouter ce code sera une promenade dans le parc. Merci Alex. – Zooking

0

Par l'officiel Sit ecore Documentation, les noms de champs doivent être uniques entre les sections.

Cela a également été discuté here

Questions connexes