Panggilan balik bebas penyegaran yang dianjurkan oleh teknologi AJAX memerlukan penulisan kode JavaScript dalam jumlah besar atau penggunaan beberapa kerangka kerja AJAX dalam teknologi asli, yang sangat mengurangi efisiensi pengembangan dan pemeliharaan. Faktanya, ASP.NET2.0 sudah menyediakan antarmuka seperti itu, yaitu ICallbackEventHandler.
Sudah banyak artikel tentang ICallbackEventHandler di Internet, dan artikel ini benar-benar menambah cerita.
ICallbackEventHandler ada di System.Web.UI Mari kita coba dengan contoh yang sangat sederhana.
Langkah pertama adalah membuat jendela WEB baru di VS2005.
Langkah kedua adalah meletakkan potongan kode HTML (di bawah) di ASPX:
1<tubuh>
2 <form id = "form1" runat = "server">
3 <div>
4 <button onclick="CallServer()">CallServer</button>
5 </div>
6 </bentuk>
7</body>
Langkah ketiga adalah meletakkan script JavaScript di <HEAD></HEAD>:
1 <tipe skrip="teks/javascript">
2 fungsi CallServer()
3 {
4 var produk = "uji";
5 <%= ClientScript.GetCallbackEventReference(ini, "produk", "ReceiveServerData",null)%>;
6}
7
8 fungsiReceiveServerData(rValue)
9 {
10 peringatan(Nilai r);
11 }
12 </skrip>
Langkah keempat adalah mewarisi antarmuka ICallbackEventHandler di kode CS latar belakang ASPX dan mengimplementasikan dua metode di antarmuka:
ICallbackEventHandler.GetCallbackResult()
Dan
ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
Langkah kelima adalah menambahkan variabel CallBackValue dan memodifikasi dua metode antarmuka sebagai:
1 string pribadi CallBackValue = string.Empty;
2
3 string ICallbackEventHandler.GetCallbackResult()
4 {
5 kembalikan CallBackValue + ", oke";
6}
7
8 batal ICallbackEventHandler.RaiseCallbackEvent(string eventArgument)
9 {
10 this.CallBackValue = eventArgument;
11 }
12
Langkah keenam adalah menjalankan. Sebuah tombol akan muncul di antarmuka. Setelah mengklik, string "Tes" akan dikirim ke latar belakang. Kode C# latar belakang akan menambahkan ", OK" ke string dan mengembalikannya ke JavaScript klien kode dan menampilkannya.
Dengan mengikuti enam langkah di atas, Anda dapat memperoleh panggilan balik bebas penyegaran. Sekarang, mari kita menganalisis beberapa bagian kode.
Pertama mari kita lihat kode JavaScript pada langkah ketiga. Ada panggilan balik dalam metode CallServer(). Pernyataan panggilan baliknya adalah:
<%= ClientScript.GetCallbackEventReference(ini, "produk", "ReceiveServerData",null)%>;
Parameter kedua di antara empat parameter menentukan bahwa variabel string dalam produk JavaScript dikembalikan ke latar belakang, dan parameter ketiga menentukan metode JavaScript TerimaServerData(Nilai string) yang menerima informasi pengembalian saat kembali dari latar belakang.
Pada langkah kelima, ada dua metode di latar belakang. Pertama, ICallbackEventHandler.RaiseCallbackEvent(string eventArgument), digunakan untuk menerima variabel string yang diteruskan di JavaScript latar depan dan menetapkannya ke variabel internal this.CallBackValue. ICallbackEventHandler.GetCallbackResult(), akan mengubah variabel internal this.CallBackValue dikembalikan ke metode JavaScript latar depan, AcceptServerData(Nilai string).
Urutan pemanggilannya adalah: (frontend)CallServer() --> (backend)ICallbackEventHandler.RaiseCallbackEvent(string eventArgument) --> (backend)ICallbackEventHandler.GetCallbackResult() --> (frontend)ReceiveServerData(string Value).
Seluruh proses panggilan sangat sederhana, dan langkah yang paling penting adalah langkah ketiga
<%= ClientScript.GetCallbackEventReference(ini, "produk", "ReceiveServerData",null)%>;
Untuk cara ini, berikut ini adalah informasi yang terdapat di Internet, dapat Anda lihat.
GetCallbackEventReference menyebabkan metode klien didaur ulang di akhir permintaan klien. Ini juga memungkinkan CallBackManager menentukan metode panggilan balik mana yang akan dihasilkan. Metode kelebihan beban yang digunakan dalam contoh ini adalah:
public string GetCallbackEventReference(
target string, argumen string,
string clientCallback, konteks string,
string klienErrorCallback)
Tabel 1. Deskripsi parameter untuk metode GetCallBackEventReference.
Parameter Deskripsi ID target halaman tempat pemanggilan panggilan balik ditangani. Untuk informasi lebih lanjut, lihat opsi kelebihan beban lainnya yang tersedia di bagian langsung berikutnya. Dalam contoh kami, "ini" adalah nilai argumen, karena panggilan balik ditangani di halaman yang sama adalah definisi parameter yang digunakan untuk mengirim nilai ke server. Nilai ini diterima oleh parameter "eventArgument" di ujung server menggunakan event RaiseCallbackEvent. "arg" menjadi nama parameter pertama dalam sampel kami klien.clientCallback Nama metode panggilan balik yang dipanggil setelah panggilan server berhasil. "CallBackHandler" adalah nama metode yang menangani panggilan balik.konteks Parameter yang dikaitkan dengan "argumen" dari klien mengidentifikasi konteks panggilan. Anda akan memahami ini dengan lebih baik dari contoh implementasi. Dalam contoh "ctx" hanyalah definisi parameter lain yang digunakan. Nilai untuk ini diteruskan dari klien.ErrorCallback Nama metode yang dipanggil dari CallBackManager jika terjadi kesalahan.
String yang dikembalikan dari metode ini adalah:
__doCallback('__Page',arg,CallBackHandler,ctx, ErrorCallBack)
Metode lain yang kelebihan beban adalah:
public string GetCallbackEventReference(
Kontrol kontrol, argumen string,
string clientCallback, konteks string)
string publik GetCallbackEventReference(
Kontrol kontrol, argumen string,
string clientCallback, konteks string,
string klienErrorCallback)