ASP.Net: Literal vs Label

102

Saya hanya ingin mendengar beberapa otoritas tentang kapan dan di mana Anda harus menggunakan LITERALkontrol atas a LABEL.

Seperti yang saya pahami, perbedaannya adalah ini: A LABELdapat diberi gaya melalui <SPAN>tag yang ditambahkan.

Saya pribadi menemukan penambahan <SPAN>tag di HTML saya menjadi sangat menjengkelkan dan tidak pernah benar-benar menerapkan gaya melalui ASP, dan LITERALs tampaknya apa yang harus digunakan sebagian besar waktu ... tapi aku khawatir ada lain pertimbangan atau keuntungan untuk menggunakan LABEL di atasnya yang tidak saya sadari.

Apakah 100% baik-baik saja untuk mengganti sembarang LABELs dengan LITERALs, asalkan kita tidak menerapkan gaya padanya? Apakah TIDAK ada pertimbangan lain?

Chuck Le Butt
sumber

Jawaban:

126

Ya, perbedaan utamanya adalah bahwa Literalkontrol hanya merender teks, tetapi Labelkontrol mengelilinginya dengan <span>tag (Kecuali Anda menggunakan AssociatedControlIDproperti, dalam hal ini Labelkontrol akan membuat <label>tag).

Jadi, label dapat diberi gaya lebih mudah, tetapi jika Anda hanya memasukkan teks, literal adalah cara yang tepat. Kontrol literal juga memiliki properti praktis Modeyang mengatur bagaimana teks ditampilkan. Anda dapat membuatnya dikodekan HTML, atau dirender tanpa perubahan apa pun, atau menghapus "elemen bahasa markup yang tidak didukung".

Jika Anda tidak menerapkan gaya apapun (misalnya dengan menggunakan Label's CssClassproperti), itu akan baik-baik saja untuk mengganti Labelkontrol dengan Literalkontrol.

Graham Clark
sumber
1
Jadi, untuk memastikan di sini, TIDAK ada pertimbangan lain sama sekali? Saya bertanya karena Anda menulis "perbedaan utamanya adalah ...". Jelas saya tidak tertarik dengan perbedaan utama. Terima kasih.
Chuck Le Butt
2
@Django: Jawaban Chris Marisic sangat penting; LabelKontrol ASP.Net harus selalu digunakan saat Anda menginginkan <label>elemen HTML . Selain itu, Label merender teks antara <spans>, Literal tidak, dan Literal memberi Anda kontrol lebih besar atas bagaimana teks ditampilkan. Tidak ada peristiwa khusus pada kedua kontrol, dan isinya dapat diakses di belakang kode dengan cara yang persis sama (melalui Textproperti).
Graham Clark
2
CHECKBOXES! TOMBOL RADIO! Jika Anda menggunakan Labelkontrol, Anda dapat menambahkan AssociatedControlIDatribut dengan ID dari kotak centang atau tombol radio yang terkait dengan label. Dengan cara itu Anda dapat mengklik label, dan kontrol terkait akan diaktifkan. Memperbesar area target yang dapat diklik juga akan membuat antarmuka pengguna lebih mudah digunakan.
Harry Pehkonen
34

Jika Anda memiliki kode yang mirip dengan

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

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

Optimal menggunakan elemen label karena akan mengubahnya dengan benar menjadi labelelemen html dengan foratribut yang benar yang menargetkan kotak teks Anda, sehingga jika pengguna mengklik label, kursor mereka akan otomatis diatur ke dalam bidang teks.

Jika tidak, gunakan literal kecuali jika teks dibungkus dengan a spanakan bermanfaat untuk gaya css.

Chris Marisic
sumber
19

masukkan deskripsi gambar di sini

Untuk menampilkan teks sederhana, teks yang diformat atau teks HTML apa adanya saya akan mulai dengan literal terlebih dahulu karena ringan dan tidak mengeluarkan tag SPAN tambahan.

Lihat video ini yang menunjukkan tentang tag tambahan tersebut.

Tetapi kita tidak dapat menerapkan CSS secara literal, kita tidak dapat menambahkan atribut seperti Label1.Attributes.Add ke literal. Semua hal yang berorientasi kontainer tidak dapat dicapai karena literal tidak dikelilingi oleh tag SPAN.

Ini juga menyedihkan melihat banyak orang ASP.NET Webform secara default memilih label untuk menampilkan teks tanpa mengetahui bahwa itu menghasilkan tag SPAN tambahan yang dapat membuat HTML Anda berat jika Anda memiliki banyak label.

Shivprasad Koirala
sumber
3

Perbedaan b / w Label dan Kontrol Literal di asp.net

Dalam hampir semua hal, Kontrol literal sama dengan kontrol Label. Kedua kontrol ini digunakan untuk menampilkan Teks di formulir web. (Properti Teks dapat diatur dalam HTML atau di belakang kode.)

Perbedaan terbesar adalah bahwa kontrol Label membungkus teks dalam huruf a spansaat dirender. Gaya apa pun yang diterapkan ke kontrol Label, akan dirender menggunakan styleproperti dari span.

Misalnya HTML berikut

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

Akan dirender sebagai

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

Kontrol literal tidak mengeluarkan tag di sekitarnya, sehingga Teks ditampilkan seperti:

Misalnya HTML berikut

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

akan dirender sebagai

Literal Control Text

Jadi, jika Anda ingin menerapkan gaya apa pun ke daripada gunakan kontrol Label jika tidak gunakan kontrol Literal. Karena itu, kontrol Literal adalah kontrol bobot yang ringan, jika dibandingkan dengan kontrol Label.

FYI: Hierarki pewarisan untuk kelas kontrol Literal adalah (Object => Control => Literal) , sedangkan untuk kontrol Label, hierarkinya adalah (Object => Control => WebControl => Label)

Rae Lee
sumber
1
Literal mode="PassThrough": techrepublic.com/blog/software-engineer/…
PreguntonCojoneroCabrón