ASP.NET memungkinkan pengguna untuk membuat kontrol. Kontrol yang ditentukan pengguna ini diklasifikasikan sebagai:
kontrol pengguna
Kontrol khusus
Kontrol pengguna berperilaku seperti halaman ASP.NET mini atau formulir web yang dapat digunakan oleh banyak halaman lainnya. Ini berasal dari kelas System.Web.UI.UserControl. Kontrol ini memiliki properti berikut:
Mereka memiliki ekstensi .ascx.
Mereka mungkin tidak mengandung, atau tag apa pun.
Mereka memiliki arahan Kontrol, bukan arahan Halaman.
Untuk memahami konsep ini, mari kita buat kontrol pengguna sederhana yang akan berfungsi sebagai footer halaman web. Untuk membuat dan menggunakan kontrol pengguna, lakukan langkah-langkah berikut:
Buat aplikasi web baru.
Klik kanan folder proyek di Solution Explorer dan pilih TAMBAHKAN Item Baru.
Pilih Kontrol Pengguna Web dari kotak dialog Tambahkan Item Baru dan beri nama footer.ascx. Awalnya, footer.ascx hanya berisi direktif Kontrol.
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="footer.ascx.cs" Inherits="customcontroldemo.footer" %>
Tambahkan kode berikut ke file:
<table> <tr> <td align="center"> Hak Cipta ©2010 TutorialPoints Ltd.</td> </tr> <tr> <td align="center"> Lokasi: Hyderabad, AP </td> </ tr></tabel>
Untuk menambahkan kontrol pengguna ke halaman web Anda, Anda harus menambahkan direktif Daftar dan sebuah instance dari kontrol pengguna halaman. Kode berikut menunjukkan instruksinya:
<%@ Halaman Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="customcontroldemo._Default" %><%@ Daftar Src="~/footer.ascx" TagName="footer" TagPrefix="Tfooter" %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transisi//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml" > < head runat="server"> <title> Halaman Tanpa Judul </title> </head> <body> <form id="form1" runat="server"> <div> <asp:Label ID="Label1" runat="server" Text="Selamat datang di Tutorial ASP.Net "></asp:Label> <br /> <br /> <asp:Button ID="Button1" runat="server" onclick="Button1_Click" Teks ="Info Hak Cipta" /> </div> <Tfooter:footer ID="footer1" runat="server" /> </form> </body></html>
Saat dijalankan, footer halaman ditampilkan dan kontrol tersedia di semua halaman di situs Anda.
Perhatikan hal berikut:
(1) Perintah Daftar menentukan nama label dan awalan label untuk kontrol.
<%@ Daftar Src="~/footer.ascx" TagName="footer" TagPrefix="Tfooter" %>
(2) Nama tag dan awalan berikut harus digunakan saat menambahkan kontrol pengguna pada halaman:
<Tfooter:footer ID="footer1" runat="server" />
Kontrol khusus disebarkan sebagai koleksi terpisah. Mereka dikompilasi ke dalam perpustakaan tautan dinamis (DLL) dan digunakan sebagai kontrol layanan ASP.NET lainnya. Mereka dapat dibuat dengan salah satu metode berikut:
Dengan mendapatkan kontrol khusus dari kontrol yang ada.
Buat kontrol kustom baru dengan menggabungkan dua atau lebih kontrol yang sudah ada.
Dengan mendapatkannya dari kelas kontrol dasar.
Untuk memahami konsep ini, mari buat kelas khusus yang hanya akan merender pesan teks di browser. Untuk membuat kontrol, lakukan langkah-langkah berikut:
Buat situs web baru. Klik kanan solusi (bukan proyek) di bagian atas pohon di Solution Explorer.
Di kotak dialog Proyek Baru, pilih Kontrol Server ASP.NET dari templat proyek.
Langkah-langkah di atas menambahkan proyek baru dan membuat kontrol kustom lengkap untuk solusi yang disebut ServerControl1. Dalam contoh ini, izinkan saya memberi nama proyek CustomControls. Untuk menggunakan kontrol ini, kontrol ini harus ditambahkan sebagai referensi ke halaman web sebelum didaftarkan pada halaman tersebut. Untuk menambahkan referensi ke proyek yang sudah ada, klik kanan pada proyek (bukan solusinya) dan klik Tambahkan Referensi.
Pilih proyek CustomControl dari tab Proyek di kotak dialog Tambahkan Referensi. Solution Explorer dapat menampilkan referensi.
Untuk menggunakan kontrol pada halaman, tambahkan direktif Daftar di bawah direktif @Page.
<%@ Daftar Majelis="CustomControls" Namespace="CustomControls" TagPrefix="ccs" %>
Selain itu, Anda dapat menggunakan kontrol seperti kontrol lainnya.
<form id="form1" runat="server"> <div> <ccs:ServerControl1 runat="server" Text = "Saya adalah Kontrol Server Khusus" /> </div> </form>
Saat dijalankan, properti Teks kontrol ditampilkan di browser, seperti yang ditunjukkan di bawah ini:
Pada contoh sebelumnya, nilai properti Teks dari kelas khusus telah ditetapkan. ASP.NET menambahkan properti ini secara default ketika kontrol dibuat. Kode berikut setelah file kontrol mengungkapkan hal ini.
menggunakan Sistem;menggunakan System.Collections.Generic;menggunakan System.ComponentModel;menggunakan System.Linq;menggunakan System.Text;menggunakan System.Web;menggunakan System.Web.UI;menggunakan System.Web.UI.WebControls;namespace CustomControls{ [ DefaultProperty("Teks")] [ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1 >")] publik class ServerControl1 : WebControl { [Bindable(true)] [Category("Appearance")] [DefaultValue("")] [Localizable(true)] public string Text { dapatkan { String s = (String)ViewState["Text"] ; return ((s == null) ? "[" + this.ID + "]" : s); } } penggantian yang dilindungi void RenderContents(keluaran HtmlTextWriter) { keluaran.Write(Teks);
Kode di atas secara otomatis dibuat untuk kontrol khusus. Peristiwa dan metode dapat ditambahkan ke kelas kontrol khusus.
Mari perluas kontrol kustom sebelumnya bernama ServerControl1. Mari kita berikan metode yang disebut checkpalindrome yang akan memberinya izin untuk memeriksa palindrome.
Palindrom adalah kata/nilai literal yang ejaannya tetap sama jika dibalik. Misalnya Malayalam, Nyonya, Saras dll.
Perluas kode untuk kontrol khusus Anda dan akan terlihat seperti ini:
menggunakan Sistem;menggunakan System.Collections.Generic;menggunakan System.ComponentModel;menggunakan System.Linq;menggunakan System.Text;menggunakan System.Web;menggunakan System.Web.UI;menggunakan System.Web.UI.WebControls;namespace CustomControls{ [ DefaultProperty("Teks")] [ToolboxData("<{0}:ServerControl1 runat=server></{0}:ServerControl1 >")] publik class ServerControl1 : WebControl { [Bindable(true)] [Category("Appearance")] [DefaultValue("")] [Localizable(true)] public string Text { dapatkan { String s = (String)ViewState["Text"] ; return ((s == null) ? "[" + this.ID + "]" : s); } } protected override void RenderContents(HtmlTextWriter output) { if (this.checkpanlindrome()) { output.Write("Ini adalah palindrom: <br />" output.Write("<FONT size=5 color=Blue >"); keluaran.Tulis("<B>"); keluaran.Tulis(Teks); keluaran.Tulis("</B>"); output.Write("</FONT>"); } else { output.Write("Ini bukan palindrom: <br />"); output.Write("<FONT size=5 color=red>"); keluaran.Tulis("<B>"); keluaran.Tulis(Teks); keluaran.Tulis("</B>"); keluaran.Tulis("</FONT>"); if (ini.Teks != null) { String str = ini.Teks; String strtoupper = Teks.ToUpper(); char[] rev = strtoupper.ToCharArray(); rev); jika (strtoupper == strrev) { kembalikan benar; } lain { kembalikan salah; } } lain { kembalikan salah;
Saat Anda mengubah kode spasi, Anda harus membangun metode dengan mengklik Bangun --> Bangun Solusi sehingga perubahan dapat diterapkan pada proyek Anda. Tambahkan kotak teks dan kontrol tombol ke halaman sehingga pengguna dapat memberikan sepotong teks. Ketika tombol diklik, itu digunakan untuk memeriksa palindrom.
<form id="form1" runat="server"> <div> Masukkan kata: <br /> <asp:TextBox ID="TextBox1" runat="server"> </asp:TextBox> <br /> < br /> <asp:Button ID="Button1" runat="server onclick="Button1_Click" Text="Periksa Palindrome" /> <br /> <br /> <ccs:ServerControl1 ID="ServerControl11" runat="server" Teks = "" /> </div></form>
Event handler Click pada tombol hanya menyalin teks dalam kotak teks ke properti teks kontrol kustom.
protected void Button1_Click(object sender, EventArgs e){ this.ServerControl11.Text = this.TextBox1.Text;}
Saat dijalankan, kontrol berhasil mendeteksi palindrom.
Perhatikan hal berikut:
(1) Saat Anda menambahkan referensi ke kontrol kustom, referensi tersebut akan ditambahkan ke kotak alat dan Anda dapat menggunakannya langsung dari kotak alat seperti kontrol lainnya.
(2) Metode RenderContents dari kelas kontrol khusus telah diganti, dan Anda dapat menambahkan metode dan kejadian Anda sendiri.
(3) Metode RenderContents menggunakan parameter tipe HtmlTextWriter, yang akan bertanggung jawab untuk menampilkannya di browser.