API Klien
Ada API kecil yang dapat digunakan pada klien untuk mencapai berbagai efek dalam kode klien Anda sendiri. Karena beberapa rutin tidak dapat disembunyikan, secara teori, Anda dapat menggunakan klien untuk memverifikasi semua variabel, karakteristik, dan fungsi yang ditentukan oleh klien. Namun, banyak dari mereka dapat diubah. Berikut ini merangkum objek klien yang kami mendorong Anda untuk digunakan.
Tabel 3. Objek Klien
Jenis Nama Deskripsi
Variabel boolean page_isvalid menunjukkan apakah halaman saat ini valid. Memverifikasi skrip selalu menjaga variabel terbaru.
Array elemen page_validator Ini adalah array yang berisi semua verifikasi pada halaman.
Variabel boolean page_validationactive menunjukkan apakah itu harus diverifikasi. Atur variabel ini ke false dapat dibuktikan dengan pemrograman.
ISVALID Boolen Atribut Setiap perangkat verifikasi klien memiliki properti, menunjukkan apakah perangkat verifikasi saat ini valid. Harap dicatat bahwa dalam versi PDC, atribut ini dicampur dengan isValid.
Melewati verifikasi klien
Salah satu tugas yang sering Anda perlu jalankan adalah menambahkan tombol "Batalkan" atau tombol navigasi pada halaman. Dalam hal ini, bahkan jika ada kesalahan pada halaman, Anda mungkin juga ingin menggunakan tombol untuk mengirimkan halaman. Karena acara OnClick Tombol Klien terjadi sebelum acara Onsubmit dari formulir, itu dapat menghindari mengirimkan inspeksi dan verifikasi yang melewati. Berikut ini menunjukkan cara menggunakan kontrol gambar HTML sebagai tombol "Batalkan" untuk menyelesaikan tugas:
<input type = gambar runat = server
Nilai = Batal
OnClick = page_validationActive = false;
OnServerClight = cmdcancel_click>
Gunakan kontrol tombol atau ImageButton untuk melakukan beberapa kebingungan, karena acara OnClick mengasumsikan bahwa itu adalah acara server -side dengan nama yang sama. Anda harus mengatur acara ini dalam skrip klien:
<ASP: ImageButton runat = server id = cmDimgcancel
alternateText = batal
OnClick = cmdcancel_click/>
<bahasa skrip = javascript>
document.all [cmdimgcancel] .onClick =
fungsi baru (page_validationactive = false;);
</script>
Metode lain untuk menyelesaikan masalah ini adalah dengan mengatur pengaturan tertentu dari tombol "Batal" sehingga tidak akan memicu acara pengiriman dalam skrip klien saat kembali. Kontrol HTMlinPutButton dan LinkButton adalah contohnya.
Efek khusus
Persyaratan umum lainnya adalah bahwa selain informasi kesalahan yang ditampilkan oleh perangkat verifikasi itu sendiri, beberapa efek lain diperlukan. Dalam hal ini, modifikasi apa pun yang Anda buat perlu dilakukan pada saat yang sama di server atau klien. Misalkan Anda perlu menambahkan label untuk mengubah warna sesuai dengan apakah inputnya valid. Berikut ini adalah cara mengimplementasikan tugas ini di server:
Public Class ChangeColorPage: Page {
label publik lblzip;
Nilai RegulaxPrespressionValidator Publik;
Override void overoad (EventArgs e) {{{{{{{{{
lblzip.forecolor = valzip.isvalid?
}
}
Semua metode di atas sempurna, tetapi selama Anda memodifikasi verifikasi di atas, Anda akan menemukan bahwa kecuali Anda melakukan operasi yang sama pada klien, itu akan terlihat sangat tidak konsisten. Kerangka kerja verifikasi akan memungkinkan Anda untuk menghindari banyak efek ganda seperti itu, tetapi tidak dapat menghindari efek lain yang harus Anda capai pada saat yang sama pada klien dan server. Berikut ini adalah fragmen yang melakukan tugas yang sama pada klien:
<Asp: Label ID = lblzip runat = server
Teks = kode pos:/>
<Asp: TextBox ID = TXTZIP runat = Server
onchange = txtziponchange ();
<Asp: RegulerxPressionValididator ID = valzip runat = server
ControlTovalidate = txtzip
errorMessage = kode pos tidak valid
ValidationXpression = [0-9] {5} /> <br>
<bahasa skrip = javascript>
Function txtziponchange () {{) {
// Jika verifikasi klien tidak ada dalam aktivitas, itu tidak akan melakukan operasi apa pun
ifof (page_validators) == tidak terdefinisi) kembali;
// Ubah warna label
lblzip.style.color = valzip.isvalid?
}
</script>
API Klien Beta 1
Untuk edisi Beta 1, beberapa fungsi yang dapat dipanggil dari skrip klien akan menyebabkan situasi lain.
Tabel 4. Fungsi dari panggilan skrip klien
Deskripsi Nama
ValidatorValidate (VAL) menggunakan perangkat verifikasi klien sebagai input. Buat perangkat verifikasi periksa inputnya dan perbarui tampilannya.
ValidatorEnable (Val, Enable) Dapatkan perangkat verifikasi klien dan nilai boolean. Mengaktifkan atau menonaktifkan perangkat verifikasi klien. Jika dinonaktifkan, perangkat verifikasi klien tidak akan dievaluasi, dan validator klien akan selalu valid.
ValidatorHookUpControl (Control, Val) memperoleh elemen input HTML dan perangkat verifikasi klien. Ubah atau buat acara perubahan elemen sehingga perangkat verifikasi dapat diperbarui selama perubahan. Fungsi ini cocok untuk verifikasi yang disesuaikan berdasarkan beberapa nilai input.
Tujuan khususnya adalah untuk mengaktifkan atau menonaktifkan perangkat verifikasi. Jika Anda ingin memverifikasi bahwa Anda hanya berlaku dalam keadaan tertentu, Anda mungkin perlu mengubah status aktivasi pada saat yang sama di server dan klien, jika tidak, Anda akan menemukan bahwa pengguna tidak dapat mengirimkan halaman.
Berikut ini adalah contoh di atas ditambah bidang.
Kelas Publik Bersyarat: Halaman {
htmlinputcheckbox publik chksameas;
Public ResearchFieldValidator RFValShipAddress;
Override void validate () {) {) yang dilindungi
Bool enableship =!
rfvalshipAddress.enabled = enableShip;
base.validate ();
}
}
Berikut ini adalah kode yang setara klien:
<Jenis input = kotak centang runat = ID server = chksameas
OnClick = OnchangesAmeas ();> sama dengan alamat pembayaran <br>
<bahasa skrip = javascript>
Fungsi onchangesameas () {
var entleship =!
ValidatorEnable (RFValShipAddress, Enableship);
}
</script>
Aturan yang efektif dan informasi kesalahan yang berguna
Setiap perangkat verifikasi menunjukkan informasi kesalahan spesifik tentang kondisi spesifik dalam kontrol tertentu. Ada beberapa aturan yang mengkonfirmasi apakah itu valid.
Semua verifikasi kosong (kecuali untuk wajib yang diperlukan Validator) dianggap valid. Jika nilai kosong tidak valid, Anda biasanya memerlukan wajib validator dan verifikasi lainnya. Anda perlu melakukan ini, karena secara umum, Anda selalu ingin menunjukkan informasi kesalahan yang berbeda pada perangkat verifikasi kosong dan efektivitas. Anda juga dapat menggunakan informasi yang tidak jelas, seperti "Anda harus memasukkan nilai, dan nilai ini harus antara 1 dan 10".
Aturan khusus lain yang digunakan ketika bidang input tidak dapat dikonversi menjadi tipe data yang ditentukan terkait dengan CompareValidator dan Rangevalidator. Proses penilaian validitas dari perbandingan controlTocompare menentukan proses penilaian validitas seperti yang dijelaskan di bawah ini:
Jika bidang input yang dirujuk oleh ControlTovalidate kosong, itu efektif.
Jika bidang input yang dirujuk oleh ControlTovalidate tidak dapat dikonversi ke tipe data yang diperlukan, itu tidak valid.
Jika bidang input yang dirujuk oleh ControlToCompare tidak dapat dikonversi ke tipe data yang diperlukan, itu valid.
Bidang input dikonversi ke tipe data yang diperlukan dan membandingkan.
Langkah ketiga terlihat sedikit tidak konsisten. Alasan untuk ini adalah karena jika perangkat verifikasi memeriksa efektivitas beberapa bidang secara bersamaan, sulit untuk menulis informasi kesalahan yang bermakna untuk perangkat verifikasi. Perangkat verifikasi independen harus digunakan untuk melaporkan situasi kesalahan di bidang input ControlToCompare. Rangevalidator memiliki metode kerja yang serupa, dengan sifat maksimum dan minimum.
Fungsi yang diaktifkan, terlihat, dan menampilkan properti
Perbedaan antara properti yang diaktifkan, terlihat dan tampilan dari perangkat verifikasi mungkin tidak terlalu jelas.
Tampilan = Tidak ada yang dapat digunakan untuk menentukan bahwa perangkat verifikasi tidak secara langsung menampilkan konten apa pun, tetapi masih mengevaluasi, masih mempengaruhi efektivitas keseluruhan, dan masih dapat menempatkan kesalahan dalam ringkasan klien dan server. Untuk verifikasi klien, nilai -nilai ini ditentukan untuk menggunakan karakteristik gaya yang terlihat atau menggunakan karakteristik gaya tampilan untuk membuka atau menutup perangkat verifikasi. Untuk verifikasi server -side, display = dinamis berarti bahwa input tidak menampilkan konten apa pun saat input valid, dan display = statis mewakili ruang yang tidak berubah (). Pengaturan terakhir harus dilipat menjadi tidak ada konten ketika sel yang hanya berisi perangkat verifikasi dalam tabel valid.
Mengapa tidak hanya menggunakan visible = false untuk membuat perangkat verifikasi terlihat? Di ASP+, atribut yang terlihat dari kontrol memiliki banyak makna: kontrol visible = false tidak akan diproses atau ditampilkan sama sekali. Justru karena makna inilah yang terlihat = salah dari perangkat verifikasi berarti bahwa tidak hanya tidak menampilkan konten apa pun, tetapi juga tidak dapat digunakan. Perangkat verifikasi ini tidak akan dievaluasi, tidak akan mempengaruhi validitas halaman, juga tidak akan dimasukkan ke dalam abstrak.
Diaktifkan itu netral. Dalam kebanyakan kasus, efek diaktifkan = false dan visible = false persis sama. Dalam edisi Beta 1 atau versi yang lebih tinggi, ada perbedaan penting: dalam verifikasi klien, perangkat verifikasi yang dinonaktifkan masih akan dikirim ke browser, tetapi dalam keadaan cacat. Anda dapat menggunakan fungsi yang dapat divalidatoren dalam skrip klien untuk mengaktifkan perangkat verifikasi.
Saat menggunakan yang terlihat atau diaktifkan untuk mengontrol apakah akan memverifikasi, perhatikan pesanan pesanan di server di atas. Atau ubah sebelum verifikasi, atau verifikasi ulang setelah perubahan. Kalau tidak, nilai isvalid mereka tidak akan mencerminkan perubahan atribut.
Kontrol CustomValidator
Cara termudah untuk memperluas kerangka kerja verifikasi adalah dengan menggunakan kontrol CustomValidator. Kontrol ini dapat digunakan untuk melakukan verifikasi bahwa kontrol verifikasi lain tidak dapat dilakukan, tetapi mereka juga dapat menjalankan verifikasi yang perlu mengakses informasi di server (seperti database atau layanan web).
Jika CustomValidator dengan hanya satu fungsi verifikasi server ditambahkan, Anda akan melihat bahwa perangkat verifikasi tidak berpartisipasi dalam verifikasi klien. Ketika pengguna beralih di antara setiap bidang dengan tombol tab, CustomValidator tidak akan diperbarui, dan server putaran -trip perlu melakukan verifikasi pada satu waktu. Jika Anda ingin menggunakan CustomValidator untuk melakukan pemeriksaan yang tidak memerlukan informasi apa pun di server, Anda juga dapat menggunakan properti fungsi ClientValidation untuk membuat perangkat verifikasi sepenuhnya berpartisipasi dalam verifikasi klien. Misalkan Anda memberikan fungsi ClientValidation. Namun pada kenyataannya, itu hanya bagian dari verifikasi. Verifikasi fungsi verifikasi klien tidak melebihi verifikasi pelaksanaan di server karena peretas dapat dengan mudah melewati fungsi verifikasi.
Berikut ini adalah contoh sederhana menggunakan CustomValidator pada klien dan server, hanya periksa apakah inputnya rata. Mari kita perkenalkan fungsi server (dalam C#):
{Layanan Pihak) {Posisi
mencoba {
int i = int.fromString (nilai);
Return ((i % 2) == 0);
} Menangkap {
Mengembalikan false;
}
}
Berikut ini adalah metode deklarasi fungsi pada klien, dan fungsi verifikasi klien yang melakukan pemeriksaan yang sama. Ini biasanya merupakan formulir JScript, tetapi jika tujuan Anda adalah Microsoft® Internet Explorer, Anda juga dapat menggunakan Formulir VBScript®.
<ASP: CustomValidator ID = CustomVal2 Runat = Server
ErrorMessage = angka tidak dapat dihapus!
ControlTovalidate = txtcustomdata
OnServalidationFunction = Servervalidation
clientValidationFunction = checkeven /> <br>
Bidang Data: <Asp: TextBox ID = TXTCUSTOSDATA RUNAT = Server />
<bahasa skrip = javascript>
<!-
Function checkeven (sumber, nilai) {{
nilai var = parseInt (nilai, 10);
if (isnan (val))
Mengembalikan false;
Return ((val % 2) == 0);
}
//->
</script>
Berikut adalah beberapa tindakan pencegahan menggunakan CustomValidator:
Mirip dengan semua kontrol verifikasi lainnya (kecuali untuk Wajib Validator), jika bidang input kosong, dianggap bahwa CustomValidator efektif.
Jika browser yang lebih lama digunakan atau verifikasi klien ditutup, fungsi verifikasi klien tidak dapat dipanggil. Sebelum mendefinisikan fungsi, Anda tidak perlu memeriksa fungsi browser yang digunakan di browser, tetapi Anda perlu memastikan bahwa browser tidak menyebabkan kesalahan skrip karena definisi. Pastikan untuk membuat kode klien Anda sebagai anotasi HTML, seperti yang ditunjukkan pada contoh berikut.
Dua parameter diteruskan ke fungsi klien Anda dan sesuai dengan parameter yang diteruskan ke fungsi server. Yang pertama adalah elemen perangkat verifikasi klien, dan yang kedua adalah nilai kontrol yang ditentukan oleh ControlTovalidate. Namun, pada klien, Anda dapat memilih untuk tidak mendefinisikan parameter untuk fungsi, yang akan berfungsi secara normal.
Jika Anda menggunakan versi beta1 atau lebih tinggi, Anda dapat tetap mengontrolTovalidate sebagai kosong. Dalam mode ini, fungsi server akan selalu memicu perjalanan bulat -trip, dan fungsi klien akan selalu dipicu setiap kali Anda mencoba mengirimkannya. Anda dapat menggunakan fitur ini untuk memverifikasi kontrol yang tidak dapat diverifikasi metode lain, seperti centang kotak atau tombol radio terpisah. Jika kondisi ini didasarkan pada beberapa kontrol, dan Anda tidak ingin pengguna mengevaluasi kondisi saat beralih di antara setiap bidang pada halaman, Anda dapat menggunakan metode ini.
Opsi lain dalam versi beta 1 atau lebih tinggi adalah peristiwa perubahan beberapa kontrol. Metode ini adalah menambahkan beberapa skrip tertanam yang memanggil Fungsi Klien ValidatorHookUpControl, seperti dijelaskan di atas.
Kontrol mana yang dapat diverifikasi?
Untuk mengaktifkan kontrol untuk diverifikasi dengan referensi kontrol, kontrol harus telah memverifikasi atribut. Semua kontrol yang diverifikasi memiliki properti validasiPropertyAttribute, yang menunjukkan atribut yang harus dibaca selama verifikasi. Jika Anda menulis kontrol sendiri, Anda dapat menentukan atribut yang akan digunakan dengan menyediakan salah satunya, sehingga kontrol terlibat dalam verifikasi.
Untuk memungkinkan verifikasi dilakukan secara normal pada klien, atribut harus sesuai dengan karakteristik nilai elemen HTML yang ditampilkan oleh klien. Banyak kontrol rumit (seperti Datagrid dan Kalender) tidak sebanding dengan klien dan hanya dapat diverifikasi di server. Oleh karena itu, hanya kontrol yang paling dekat dengan elemen HTML yang dapat berpartisipasi dalam verifikasi. Selain itu, kontrol harus memiliki nilai logika tunggal pada klien. Oleh karena itu, RadioButtonList dapat diverifikasi, tetapi Centang Kotak tidak bisa.
Akhir
Penjelasan verifikasi ASP+ yang disebutkan di atas mungkin telah melampaui konten yang ingin Anda pahami. Nikmati!