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 LITERAL
parece 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?
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.
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.
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.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)