ASP.Net: letterale vs etichetta


102

Volevo solo sentire alcune autorità su quando e dove dovresti usare un LITERALcontrollo su un file LABEL.

A quanto ho capito, la differenza è questa: A LABELpuò essere stilizzato tramite i <SPAN>tag aggiunti.

Personalmente trovo che l'aggiunta di <SPAN>tag nel mio HTML sia molto fastidiosa e non applico mai gli stili tramite ASP, quindi LITERALsembra che s sia ciò che dovrebbe essere usato la maggior parte del tempo ... ma sono preoccupato che ci siano altre considerazioni o vantaggi da usando un'ETICHETTA su di essa di cui non sono a conoscenza.

Va bene al 100% sostituire qualsiasi LABELs con LITERALs, a condizione che non stiamo applicando stili a loro? NON ci sono altre considerazioni?

Risposte:


126

Sì, la differenza principale è che i Literalcontrolli eseguono il rendering del testo, ma i Labelcontrolli lo circondano con <span>tag (a meno che non si utilizzi la AssociatedControlIDproprietà, nel qual caso un Labelcontrollo renderà un <label>tag).

Quindi, le etichette possono essere stilizzate più facilmente, ma se stai solo inserendo del testo, i letterali sono la strada da percorrere. I controlli letterali hanno anche una comoda proprietà Modeche regola la modalità di rendering del testo. È possibile codificarlo in HTML o renderlo senza modifiche o rimuovere gli "elementi del linguaggio di markup non supportati".

Se non stai applicando alcuno stile (ad esempio usando Labella CssClassproprietà di), andrà bene sostituire i Labelcontrolli con i Literalcontrolli.


1
Quindi, solo per essere sicuri qui, non ci sono altre considerazioni? Te lo chiedo perché scrivi "la differenza principale è ...". Ovviamente non mi interessa la differenza principale. Grazie.
Chuck Le Butt

2
@Django: la risposta di Chris Marisic è davvero importante; I Labelcontrolli ASP.Net devono essere sempre utilizzati quando si desidera un <label>elemento HTML . Oltre a ciò, le etichette rendono il testo tra <spans>, i letterali no e i letterali ti danno un maggiore controllo su come il testo viene reso. Non ci sono eventi speciali su nessuno dei controlli e il loro contenuto è accessibile nel code-behind esattamente nello stesso modo (tramite la Textproprietà).
Graham Clark

2
CASELLE! TASTI DELLA RADIO! Se utilizzi i Labelcontrolli, puoi aggiungere l' AssociatedControlIDattributo con l'ID della casella di controllo o del pulsante di opzione a cui è associata l'etichetta. In questo modo puoi fare clic sull'etichetta e il controllo associato verrà attivato. Aumentare l'area di destinazione cliccabile renderà anche l'interfaccia utente più facile da usare.
Harry Pehkonen

34

Quando hai un codice simile a

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

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

È ottimale utilizzare un elemento etichetta perché lo trasformerà correttamente in un labelelemento html con l' forattributo corretto che mira alla tua casella di testo, in modo che se un utente fa clic sull'etichetta imposta automaticamente il cursore all'interno del campo di testo.

Altrimenti usa il letterale a meno che il testo avvolto in un spannon sia vantaggioso per lo stile CSS.


19

inserisci qui la descrizione dell'immagine

Per visualizzare testo semplice, testo formattato o testo HTML così com'è, inizierò con il letterale perché è leggero e non emette tag SPAN aggiuntivi.

Guarda questo video che mostra questi tag aggiuntivi.

Ma non possiamo applicare CSS su un letterale, non possiamo aggiungere attributi come Label1.Attributes.Add a un letterale. Qualsiasi cosa orientata al contenitore non può essere ottenuta poiché il valore letterale non è circondato da un tag SPAN.

È anche triste vedere molti ragazzi di ASP.NET Webform per impostazione predefinita scegliere l'etichetta per visualizzare il testo senza sapere che genera tag SPAN extra che possono rendere pesante il tuo HTML se hai molte etichette.


3

Differenza b / n etichetta e controllo letterale in asp.net

In quasi tutti i modi un controllo Literal è uguale a un controllo Label. Entrambi questi controlli vengono utilizzati per visualizzare il testo su un modulo web. (La proprietà Text può essere impostata nell'HTML o nel code-behind.)

La differenza principale è che il controllo Label racchiude il testo in un file spanquando viene eseguito il rendering. Qualsiasi stile applicato al controllo Label verrà eseguito il rendering utilizzando la styleproprietà di span.

Ad esempio, il seguente codice HTML

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

Sarà reso come

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

Un controllo letterale non restituisce alcun tag circostante, quindi il testo viene visualizzato così com'è:

Ad esempio, il seguente codice HTML

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

sarà reso come

Literal Control Text

Quindi, se si desidera applicare uno stile a un controllo Label, utilizzare altrimenti il ​​controllo Literal. Per questo motivo, il controllo Literal è un controllo leggero, se confrontato con il controllo Label.

FYI: la gerarchia di ereditarietà per la classe di controllo Literal è (Object => Control => Literal) , dove come per il controllo Label, la gerarchia è (Object => Control => WebControl => Label)


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.