ASP.Net: Literal vs legenda

Só queria ouvir algumas autoridades sobre quando e onde deve usar um LITERAL controlo sobre um LABEL.

tanto quanto sei, a diferença é esta: um LABEL pode ser estilizado através das marcas <SPAN> que são adicionadas.

pessoalmente, acho que a adição de <SPAN> tags no meu HTML é muito irritante e nunca aplica estilos através do ASP, pelo que LITERALparece ser o que deve ser usado na maioria das vezes... mas preocupa-me que haja outras considerações ou benefícios. a usar um rótulo que desconheço.

é 100% bom substituir qualquer LABEL s por {[[0]} s, desde que não estejamos a aplicar estilos a eles? Não há outras considerações?

Author: Neeraj Kumar, 2010-07-22

4 answers

Yep, a principal diferença é que Literal os controlos apenas rendem texto, mas Label Os controlos rodeiam-no com <span> Marcas (A menos que use a propriedade AssociatedControlID, caso em que um Label controlo irá renderizar uma marca <label>).

Então, etiquetas podem ser estilizadas mais facilmente, mas se você está apenas inserindo texto, literais são o caminho a seguir. Controles literais também têm uma propriedade útilMode que governa como o texto é renderizado. Você pode tê-lo codificado em HTML, ou renderizado sem quaisquer alterações, ou ter quaisquer" elementos de linguagem de marcação não suportados " removidos.

Se não estiver a aplicar nenhum estilo (por exemplo, usando Label's CssClass propriedade), não há problema em substituir os controlos Label por Literal controlos.

 117
Author: Graham Clark, 2011-09-02 12:36:22

Quando tem um código semelhante a

<asp:Label EnableViewState="false" ID="Label8" runat="server" 
        AssociatedControlID="txtEmail">Email Address:</asp:Label>

<asp:TextBox ID="txtEmail" runat="server"></asp:TextBox>

É óptimo usar um elemento de legenda porque irá transformá-lo correctamente num elemento html label com o atributo correcto for a visar o seu campo de texto, de modo que, se um utilizador carregar no rótulo, irá automaticamente definir o seu cursor dentro do campo de texto.

Caso contrário, use o literal, a menos que ter o texto embrulhado em span seria benéfico para o estilo css.

 32
Author: Chris Marisic, 2012-01-12 10:15:34

enter image description here

Para mostrar texto simples, texto formatado ou texto HTML como está, vou começar com o literal primeiro como seu leve e não emite etiquetas de calibração extra.

Veja Este vídeo que demonstra sobre essas marcas extras.

Mas não podemos aplicar CSS em um literal, não podemos adicionar atributos como Label1.Atributo.Adiciona a um literal. Qualquer coisa orientada a contêiner não pode ser alcançada como literal não é cercado por uma marca de calibração.

Também é triste. para ver muito ASP.NET os tipos da Webform por omissão escolhem a etiqueta para mostrar o texto sem saber que ele gera marcas de extensão extra que podem tornar o seu HTML pesado se você tiver muitas etiquetas.
 16
Author: Shivprasad Koirala, 2016-09-26 15:45:38

Diferença entre a legenda b/w E o controlo Literal em asp.net

Em quase todos os aspectos, um controlo Literal é o mesmo que um controlo de etiquetas. Ambos os controles são usados para exibir texto em uma webform. (A propriedade de texto pode ser definida no HTML ou no código atrás.)

A maior diferença é que o Controle do rótulo envolve o texto em um {[[2]} quando renderizado. Qualquer estilo que seja aplicado ao controle da etiqueta, será renderizado usando a propriedade style da span.

Por exemplo, o seguinte HTML

<asp:Label ID="Label1" runat="server"  Text="Label Text"
ForeColor="Red" Font-Bold="true" ></asp:Label>

Será representado como

<span id="Label1" style="color:Red;font-weight:bold;">Label Text</span>

Um controlo Literal não emite nenhuma marca envolvente, por isso o texto é apresentado como:

Por exemplo, o seguinte HTML

<asp:Literal ID="Literal1" runat="server" 
Text="Literal Control Text"></asp:Literal>

Será representado como

Literal Control Text

Por isso, se quiser aplicar quaisquer estilos a um controlo de legenda than use de outra forma use o controlo Literal. Por causa disso, o Controle Literal é um peso leve controlo, quando comparado com o controlo do rótulo.

FYI: a hierarquia de hereditariedade para a classe de controlo Literal é (objecto => controlo => Literal) , onde, quanto ao controlo de legenda, a hierarquia é (objecto => controlo => WebControl=> legenda)

 1
Author: Rae Lee, 2016-01-26 16:28:23