Membuat kontrol server di Asp.net sama dengan kontrol Windows Form. Ada beberapa cara:
1. Kontrol pengguna
2. Kontrol khusus berasal dari Control dan WebControl
3. Perluas dari kontrol server Asp.net yang ada
Kontrol pengguna memiliki ekstensi .ascx dan disimpan sebagai file teks. Kontrol pengguna tidak perlu dikompilasi sebelumnya seperti kontrol server yang berasal dari Kontrol dan WebControl. Saat kontrol pengguna digunakan di halaman .aspx, pengurai halaman dimulai dari kelas A secara dinamis dihasilkan dari file aspx dan dikompilasi menjadi perakitan. Keuntungannya adalah: menyelesaikan penggunaan kembali kode, dan setiap kontrol pengguna memiliki model objeknya sendiri, dan bahasa penulisannya tidak ada hubungannya dengan bahasa halaman .aspx.
Memperluas dari kontrol server Asp.net yang ada, ini terutama meningkatkan fungsi kontrol server asli .net untuk memenuhi kebutuhan pengembangan dan pengguna akhir kami.
Kontrol khusus yang berasal dari Control dan WebControl disebarkan dalam bentuk perpustakaan kelas yang dikompilasi.
1 dan 3 di atas tidak akan dijelaskan pada seri ini, pada seri ini hanya akan dijelaskan kontrol server yang berasal dari Control dan WebControl.
Jika kita ingin menulis kontrol khusus, kita hanya perlu mewarisi dari Control dan WebControl. Control telah mengimplementasikan antarmuka IComponent, dan WebControl sendiri berasal dari Control, sehingga juga mendukung desain visual komponen.
Metode Render dan kelas HtmlTextWriter Ketika kita memperoleh kontrol server Asp.net dari kelas Kontrol, kelas Kontrol memberi kita Render yang dapat di-overload dan sebuah instance dari tipe HtmlTextWriter objek HtmlTextWriter, dan HtmlTextWriter merangkum fungsi penulisan aliran teks HTML.
menggunakan Sistem; menggunakan System.Collections.Generik; menggunakan Sistem.Teks;
namespace KelasPerpustakaan1 { Kontrol kelas publik1 : Sistem.Web.UI.Kontrol { override yang dilindungi void Render (penulis System.Web.UI.HtmlTextWriter) { writer.Write("Saya di sini."); } }
Kontrol kelas publik2 : Sistem.Web.UI.WebControls.WebControl { override yang dilindungi void Render (penulis System.Web.UI.HtmlTextWriter) { writer.Write("Saya juga di sini."); } } } |
Dalam kode di atas, kita mendefinisikan Control1 dan Control2, yang masing-masing merupakan warisan dari Control dan WebControl. Jadi, apa perbedaan mendasar di antara keduanya? Pertama lihat efek berikut:
Dari efek di atas, tidak sulit untuk melihat perbedaan di antara keduanya. Kelas WebControl menyediakan dukungan untuk gaya melalui atribut, seperti font, tinggi, warna latar belakang, dll. Jadi kapan kita memilih untuk turun dari Control, dan kapan kita memilih untuk turun dari WebControl? Jika kontrol ingin menghasilkan elemen non-visual atau ditampilkan ke klien non-HTML, itu akan diturunkan dari Kontrol, seperti SqlDataSource; jika ingin menyediakan HTML visual kepada klien, maka kita akan berasal dari WebControl, seperti TextBox .