none
Controles interpretam html Página aspx ??? RRS feed

  • Pergunta

  • Olá, por que eu devo usar o controle literal para mostrar um html em uma página aspx(o código html é formatado no code behind) se o controle label interpreta html também, e o span também mostra html. Talvez a melhor pergunta seja, qual a diferença entre eles?

    label.text = "<h1>teste</h1>"; funciona

    span.innerHtml = "<h1>teste</h1>"; funciona

    literal.text =  "<h1>teste</h1>"; funciona


    quinta-feira, 16 de junho de 2011 14:08

Respostas

  • Ola Tulio,

    http://www.w3schools.com/ASPNET/control_literal.asp

    "The Literal control is used to display text on a page. The text is programmable."

    Tipo... o Literal na verdade é um Label.... não é pra usar com codigo HTML... não é um componente que faça muito sentido para mim ate hoje...

    E entendo que "funciona"... isso é normal... tem milhares de coisas que funcionam... e não são erradas por isso... inclusive muitas "gambiarras" funcionam sem problema algum...

    Digo "gambiarra" na definção academica, não pejorativa... isso é... usar algo feito para ser feito de uma forma.... de outro jeito.... funciona... mas não é assim que foi criada a ferramenta para funcionar...

    Que nem soltar um parafuso com uma faca... funciona tambem...

    Agora seguindo as metodologias comum de desenvolvimento  e as melhores praticas... deve ser feito usando um objeto HtmlControl... que existe para esse tipo de operações.... mas nada te obriga a seguir uma metodologia ou boas praticas.... a diferença vai ser no seu futuro profissional quando vc for disputar uma vaga de emprego com alguem que esta mais acostumado a elas...

    [...]

    Mas tem que ver o porque vc quer fazer isso... digamos que vc tenha um conteudo HTML no banco de dados e quer mostrar na pagina...

    1) porque esses dados tão como HTML no banco de dados ? não podeira essa informação estar dividia em campos facilitando o acesso aos dados ?

    2) os dados tão em Html... pq eh um sistema de versionamento de paginas HTML !!!... e eu quero mostrar na tela... ai sim tudo bem usar um div (span) e colocar no innerHtml dela... ele ta ai para esses casos de excessões mesmo.... 

     

    • Sugerido como Resposta Luiz Estevam quinta-feira, 16 de junho de 2011 22:52
    • Marcado como Resposta Tulio S quarta-feira, 22 de junho de 2011 14:22
    quinta-feira, 16 de junho de 2011 20:32
    Moderador

Todas as Respostas

  • Ola,  na verdade o que vc esta fazendo é uma gambiarra... o correto seria usar um HtmlControl... pq da forma q vc esta fazendo, vc não tem como acessar mais essa tag via codigo posteriomente....

     

    var h1 = new HtmlGenericControl("h1");
    h1.InnerText = "teste";
    this.Controls.Add(h1);
    

     


    Se eu quiser acessar o valor de H1 posteriormente e alterar o estilo dela:

     

    var tagH1 = this.Controls.OfType<HtmlGenericControl>().Where(item => item.TagName.Equals("h1")).FirstOrDefault();
    
    tagH1.Style.Add(HtmlTextWriterStyle.BackgroundColor, "red");
    


     


    quinta-feira, 16 de junho de 2011 14:23
    Moderador
  • Obrigado pela resposta, mas não entendi o porque de ser uma gambiarra, o controle literal não serve para isso?

    Eu entendi que pelo o que você disse, eu não consigo acessar a tag posteriormente, mas eu estou levando em conta que eu só quero exibir o html.

    Continuo com a dúvida.

    quinta-feira, 16 de junho de 2011 18:09
  • Ola Tulio,

    http://www.w3schools.com/ASPNET/control_literal.asp

    "The Literal control is used to display text on a page. The text is programmable."

    Tipo... o Literal na verdade é um Label.... não é pra usar com codigo HTML... não é um componente que faça muito sentido para mim ate hoje...

    E entendo que "funciona"... isso é normal... tem milhares de coisas que funcionam... e não são erradas por isso... inclusive muitas "gambiarras" funcionam sem problema algum...

    Digo "gambiarra" na definção academica, não pejorativa... isso é... usar algo feito para ser feito de uma forma.... de outro jeito.... funciona... mas não é assim que foi criada a ferramenta para funcionar...

    Que nem soltar um parafuso com uma faca... funciona tambem...

    Agora seguindo as metodologias comum de desenvolvimento  e as melhores praticas... deve ser feito usando um objeto HtmlControl... que existe para esse tipo de operações.... mas nada te obriga a seguir uma metodologia ou boas praticas.... a diferença vai ser no seu futuro profissional quando vc for disputar uma vaga de emprego com alguem que esta mais acostumado a elas...

    [...]

    Mas tem que ver o porque vc quer fazer isso... digamos que vc tenha um conteudo HTML no banco de dados e quer mostrar na pagina...

    1) porque esses dados tão como HTML no banco de dados ? não podeira essa informação estar dividia em campos facilitando o acesso aos dados ?

    2) os dados tão em Html... pq eh um sistema de versionamento de paginas HTML !!!... e eu quero mostrar na tela... ai sim tudo bem usar um div (span) e colocar no innerHtml dela... ele ta ai para esses casos de excessões mesmo.... 

     

    • Sugerido como Resposta Luiz Estevam quinta-feira, 16 de junho de 2011 22:52
    • Marcado como Resposta Tulio S quarta-feira, 22 de junho de 2011 14:22
    quinta-feira, 16 de junho de 2011 20:32
    Moderador