ControlAdapter Kelas
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menyesuaikan penyajian untuk kontrol turunan tempat adaptor dilampirkan, untuk memodifikasi markup atau perilaku default untuk browser tertentu, dan merupakan kelas dasar dari mana semua adaptor kontrol mewarisi.
public ref class ControlAdapter abstract
public abstract class ControlAdapter
type ControlAdapter = class
Public MustInherit Class ControlAdapter
- Warisan
-
ControlAdapter
- Turunan
Keterangan
Adaptor kontrol adalah komponen yang mengambil alih metode dan peristiwa kelas tertentu Control dalam siklus hidup eksekusinya untuk memungkinkan penanganan khusus browser atau markup. .NET Framework memetakan adaptor kontrol turunan tunggal ke Control objek untuk setiap permintaan klien.
Adaptor memodifikasi kontrol untuk browser atau kelas browser tertentu atau bertindak sebagai filter sewenang-wenang pada beberapa kemampuan. Biasanya adaptor didefinisikan oleh bahasa markup yang digunakan browser (misalnya, XHTML atau HTML 3.2). Sebagian besar kemampuan beradaptasi dalam perilaku penyajian dapat dienkapsulasi dalam kelas khusus yang berasal dari HtmlTextWriter kelas . Oleh karena itu, kemungkinan adaptor tunggal dapat digunakan untuk sejumlah perilaku kelas browser atau bahwa penyertaan kemampuan beradaptasi di HtmlTextWriter kelas dapat membuat penggunaan adaptor kontrol tidak perlu.
Adaptor untuk kelas kontrol berlaku untuk semua kontrol yang mewarisi dari kelas tersebut, kecuali ada adaptor yang lebih khusus. Misalnya, adaptor untuk BaseValidator kelas dapat digunakan untuk semua Validator objek.
Adaptor biasanya tidak mewarisi langsung dari ControlAdapter kelas , tetapi dari salah satu kelas dasar adaptor khusus target yang menyediakan fungsionalitas tambahan khusus untuk jenis kontrol dan browser target atau penyajian tertentu yang diperlukan.
Kontrol itu sendiri tidak selalu memerlukan adaptor. Jika kontrol diperluas melalui komposisi, umumnya adaptor kontrol anak sudah cukup.
Setiap kontrol memiliki pemetaan eksplisit ke adaptor melalui file definisi .browser. Dengan demikian, akses apa pun ke Control.Adapter properti menggunakan objek yang HttpBrowserCapabilities diekstrak dari file definisi browser untuk melakukan pencarian untuk pemetaan adaptor yang akan dikontrol.
Selama pemrosesan, .NET Framework mencegat panggilan ke metode kontrol yang dapat diambil alih yang dapat dikhususkan untuk target. Jika adaptor kontrol dilampirkan, .NET Framework memanggil metode adaptor terkait.
Adaptor melakukan penyajian untuk kontrol melalui Render metode . Jika ditimpa, Render berpotensi tidak boleh memanggil implementasi kelas dasar karena melakukan panggilan kembali pada Control.Render metode . Ini dapat menyebabkan penyajian terjadi dua kali, sekali oleh adaptor dan sekali oleh kontrol.
Metode Render dasar memanggil kembali Control.Render metode kontrol. Dengan demikian, jika Anda mengambil alih Render, Anda tidak boleh memanggil implementasi kelas dasar kecuali penyajian yang Anda terapkan adalah selain yang disediakan oleh Control.Render kontrol.
Anda harus memastikan bahwa .NET Framework melakukan intersepsi untuk adaptor kontrol anak. Anda dapat melakukan ini dengan memanggil RenderChildren metode dasar, yang memanggil Control.RenderChildren metode kontrol, dari penimpaan Anda Render .
Metode BeginRender dan EndRender dipanggil oleh kontrol segera sebelum dan sesudah (masing-masing) kontrol memanggil Render metode . Jika pra-dan pasca-penyajian adalah satu-satunya tugas pemrosesan khusus browser yang diperlukan, menggunakan BeginRender dan EndRender mungkin membuatnya tidak perlu untuk mengambil Renderalih . Perilaku default metode BeginRender dan EndRender adalah memanggil metode yang sesuai dari HtmlTextWriter.
Untuk mempertahankan informasi statusnya sendiri, adaptor kontrol dapat mengambil SaveAdapterControlStatealih metode , , LoadAdapterControlStateSaveAdapterViewState, dan LoadAdapterViewState . SaveAdapterControlState, , SaveAdapterViewStateLoadAdapterControlState, dan LoadAdapterViewState dipanggil ketika kontrol privat dan melihat status disimpan dan dimuat, masing-masing.
Metode OnInitdasar , OnLoad, OnPreRender, dan OnUnload memanggil kembali pada metode kelas yang Control sesuai. Dengan demikian, salah satu metode ini ControlAdapter yang ditimpa harus memanggil metode dasarnya; jika tidak, peristiwa yang terkait dengan Control metode kelas tidak akan dinaikkan.
Kontrol dan adaptor secara opsional mengimplementasikan IPostBackDataHandler antarmuka dan IPostBackEventHandler . .NET Framework menentukan apakah adaptor ada dan apakah adaptor mengimplementasikan antarmuka ini. Jika ya, adaptor harus mengambil alih LoadPostDatametode , RaisePostDataChangedEvent, dan RaisePostBackEvent , seperlunya. Jika data postback tidak dikenali dalam adaptor, data tersebut harus memanggil kembali kontrol untuk memprosesnya. Penanganan aktivitas berikutnya juga harus memanggil kembali kontrol.
Catatan Bagi Implementer
Ketika Anda mewarisi dari ControlAdapter kelas , kontrol yang memerlukan fungsionalitas adaptor umum harus memiliki kelas dasar adaptor yang sesuai, bernama dalam pola ControlTypeAdapter (misalnya, TextBoxAdapter). Adaptor harus minimal mengembalikan instans kontrol yang diketik dengan kuat melalui propertinya Control .
- Adaptor kontrol untuk jenis kontrol dan bahasa markup tertentu harus dinamai dalam pola
MarkupControlTypeAdapter(misalnya,XhtmlTextBoxAdapter). Adaptor untuk kontrol harus diimplementasikan dalamAdapterssubnamespace.
Adaptor kontrol harus mewarisi dari kelas dasar yang sesuai dan mengikuti model pewarisan yang sama dengan kontrol. Misalnya, adaptor untuk kontrol yang mewarisi dari Control kelas dasar harus mewarisi dari ControlAdapter kelas atau kelas yang relevan ControlTypeAdapter .
Setiap adaptor khusus harus didefinisikan untuk kontrol khusus di bawah semua simpul perangkat dalam file .browser konfigurasi.
Kontrol yang diimplementasikan dengan benar tidak boleh mengasumsikan bahwa adaptor terpasang, atau adaptor yang terpasang mengimplementasikan antarmuka tertentu. Sebaliknya, itu harus memeriksa ini sebelum memanggil.
Dimungkinkan untuk mensimulasikan penggantian metode peristiwa yang dilindungi dalam kontrol, seperti OnClick(EventArgs) metode LinkButton. Pertama, buat kelas adaptor dengan OnClick metode . Kemudian buat kontrol baru yang berasal dari LinkButton dan ambil alih OnClick(EventArgs) metode . Metode yang ditimpa OnClick(EventArgs)OnClick memanggil metode adaptor. Objek adaptor tersedia melalui properti kelas yang Control dilindungiAdapter. Properti Adapter kontrol adalah null ketika tidak ada adaptor terkait, jadi kode apa pun harus memeriksa kondisi tersebut sebelum memanggil metode adaptor.
Konstruktor
| Nama | Deskripsi |
|---|---|
| ControlAdapter() |
Menginisialisasi instans baru dari kelas ControlAdapter. |
Properti
| Nama | Deskripsi |
|---|---|
| Browser |
Mendapatkan referensi ke kemampuan browser klien yang membuat permintaan HTTP saat ini. |
| Control |
Mendapatkan referensi ke kontrol tempat adaptor kontrol ini dilampirkan. |
| Page |
Mendapatkan referensi ke halaman tempat kontrol yang terkait dengan adaptor ini berada. |
| PageAdapter |
Mendapatkan referensi ke adaptor halaman untuk halaman tempat kontrol terkait berada. |
Metode
| Nama | Deskripsi |
|---|---|
| BeginRender(HtmlTextWriter) |
Dipanggil sebelum penyajian kontrol. Dalam kelas adaptor turunan, menghasilkan tag pembuka yang diperlukan oleh target tertentu tetapi tidak diperlukan oleh browser HTML. |
| CreateChildControls() |
Membuat kontrol turunan khusus target untuk kontrol komposit. |
| EndRender(HtmlTextWriter) |
Dipanggil setelah penyajian kontrol. Dalam kelas adaptor turunan, menghasilkan tag penutup yang diperlukan oleh target tertentu tetapi tidak diperlukan oleh browser HTML. |
| Equals(Object) |
Menentukan apakah objek yang ditentukan sama dengan objek saat ini. (Diperoleh dari Object) |
| GetHashCode() |
Berfungsi sebagai fungsi hash default. (Diperoleh dari Object) |
| GetType() |
Mendapatkan Type instans saat ini. (Diperoleh dari Object) |
| LoadAdapterControlState(Object) |
Memuat informasi status kontrol adaptor yang disimpan selama SaveAdapterControlState() permintaan sebelumnya ke halaman tempat kontrol yang terkait dengan adaptor kontrol ini berada. |
| LoadAdapterViewState(Object) |
Memuat informasi status tampilan adaptor yang disimpan oleh SaveAdapterViewState() selama permintaan sebelumnya ke halaman tempat kontrol yang terkait dengan adaptor kontrol ini berada. |
| MemberwiseClone() |
Membuat salinan dangkal dari Objectsaat ini. (Diperoleh dari Object) |
| OnInit(EventArgs) |
Mengambil alih OnInit(EventArgs) metode untuk kontrol terkait. |
| OnLoad(EventArgs) |
Mengambil alih OnLoad(EventArgs) metode untuk kontrol terkait. |
| OnPreRender(EventArgs) |
Mengambil alih OnPreRender(EventArgs) metode untuk kontrol terkait. |
| OnUnload(EventArgs) |
Mengambil alih OnUnload(EventArgs) metode untuk kontrol terkait. |
| Render(HtmlTextWriter) |
Menghasilkan markup khusus target untuk kontrol tempat adaptor kontrol dilampirkan. |
| RenderChildren(HtmlTextWriter) |
Menghasilkan markup khusus target untuk kontrol anak dalam kontrol komposit tempat adaptor kontrol dilampirkan. |
| SaveAdapterControlState() |
Menyimpan informasi status kontrol untuk adaptor kontrol. |
| SaveAdapterViewState() |
Menyimpan informasi status tampilan untuk adaptor kontrol. |
| ToString() |
Mengembalikan string yang mewakili objek saat ini. (Diperoleh dari Object) |