FieldRenderer - Obtenha o nome de campo específico de diferentes seções de modelo

StackOverflow https://stackoverflow.com/questions/2417362

  •  19-09-2019
  •  | 
  •  

Pergunta

Existe uma maneira de obter um nome de campo específico de um modelo com várias seções para um controle de robertador de campo?

F.Ex. Eu tenho um modelo com as seções "dados" e "dados2", ambos têm um campo de texto único chamado "texto". Existe uma maneira de fazer meu campo de campo obter o campo "texto" na seção "Data2"

Seria bom se uma das sugestões abaixo funcionasse:

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

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

Br Larre

Foi útil?

Solução

Embora seja desenvolvido assim de propósito (não queremos que os desenvolvedores do Sitecore percam tempo nos nomes de seções), acho que faz sentido incluir isso. Deixe -me listar isso como uma solicitação de recurso.

Se você quiser saber que isso funciona corretamente, primeiro entende como o Fieldrender está funcionando. Ele começa um oleoduto chamado 'Renderfield'. Na segunda etapa disso, está lendo o FieldValue:

Substitua esse por sua própria aula personalizada por algo assim:

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

Algo na linha de:

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

Mas agora com verificações de erro :)

Outras dicas

Por documentação oficial do Sitecore, os nomes de campo devem me exclusivos entre as seções.

Isso também foi discutido aqui

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top