Callback klien Asp.Net 2.0 sendiri,
Asp.Net 2.0 telah dirilis. 2.0 memiliki banyak fitur baru, dan callback klien adalah salah satunya. Callback klien memungkinkan kita untuk memanggil metode sisi server tanpa postback. Mereka konsisten dengan fungsi yang disediakan oleh AJAX, namun tidak sefleksibel AJAX. AJAX dapat menyesuaikan metode pemanggilan, namun fungsi callback yang disertakan dengan 2.0 tidak bisa. Untuk menggunakan fungsi panggilan balik klien, Anda harus mengimplementasikan antarmuka system.Web.UI.IcallbackEventHandler.
Antarmuka ini berisi dua metode
//Metode ini selalu dipanggil ketika klien menelepon kembali
kekosongan publik RaiseCallbackEvent (String eventArgument)
//Metode ini akan dipanggil setelah RaiseCallbackEvent dijalankan. Nilai kembalian dari metode ini akan dikirim kembali ke klien
string publik GetCallbackResult()
contoh:
.cs:
String cbReference = Halaman.ClientScript.GetCallbackEventReference(
ini,"arg", "ReceiveServerData", "konteks");
Skrip panggilan balik string;
callbackScript = "fungsi CallServer(arg, konteks)" + "{ " + cbReference + "} ;";
Halaman.ClientScript.RegisterClientScriptBlock(
this.GetType(),"CallServer", callbackScript, true);
javascript:
Pengenalan AJAX
AJAX bukanlah sebuah teknologi baru, melainkan kombinasi organik dari beberapa teknologi yang sudah ada, antara lain: XmlHttp, Reflect. Kerangka kerja AJAX pada dasarnya mencakup: HttpHandler khusus dan sepotong kode JavaScript.
Mekanisme operasi AJAX
Di masa lalu, ketika kami menggunakan XmlHttp untuk mengimplementasikan halaman non-refresh, kami menggunakan , perbedaannya adalah HttpHandler halaman ini diimplementasikan sendiri.
Bangun AJAX Anda sendiri:
1. Pertama kita perlu mengimplementasikan Http handler (HttpHandler) untuk merespon permintaan klien:
Untuk mengimplementasikan HttpHandler kustom, Anda perlu mengimplementasikan antarmuka IHttpHandler.
Antarmuka berisi satu properti dan satu metode:
bool IHttpHandler.IsReusable
batal IHttpHandler.ProcessRequest(konteks HttpContext)
Contoh:
bool IHttpHandler.Dapat digunakan kembali
{
dapatkan { kembalikan benar; }
}
batal IHttpHandler.ProcessRequest(konteks HttpContext)
{
konteks.Response.Clear(); //Dapatkan metode yang akan dipanggil
string methodName = konteks.Permintaan.QueryString["saya"];
//Dapatkan informasi perakitan.
//Czhenq.AJAX.Class1.Dencode adalah metode pengkodean string khusus
string Nama Perakitan = Czhenq.AJAX.Class1.Dencode(context.Request.QueryString["as"]);
//Dapatkan parameter metode
string Argumen = konteks.Request.QueryString["ar"]; //Mulai memanggil metode
Tipe tipe = Tipe.GetType(AssemblyName);
MethodInfo metode = ketik.GetMethod(nama metode,
BindingFlags.NonPublic |. BindingFlags.Public |. BindingFlags.Static |. BindingFlags.Instance);
jika (metode!= null)
{
//Parameter dipisahkan oleh ","
string[] args = Argumen.Split(",".ToCharArray());
ParameterInfo[] paras = metode.GetParameters();
objek[] argumen = objek baru[paras.Panjang];
for (int i = 0; i < argumen.Panjang; i++)
{
if (i < args.Panjangnya) {
//Karena semua parameter yang dilewatkan oleh XmlHttp bertipe String, maka parameter tersebut harus dikonversi
//Di sini kami hanya mengonversi parameter ke Int32, tidak ada pertimbangan lain yang dibuat.
argumen[i] = Konversi.ToInt32(args[i]);
}
}
nilai objek = metode.Invoke(Activator.CreateInstance(type, true), argument);
if (nilai != null) konteks.Respon.Tulis(nilai.ToString());
else konteks.Respon.Write("kesalahan");
}
//Akhir pemrosesan
konteks.Respon.End();
Selamat datang di forum komunitas .NET dan berinteraksi dengan 2 juta staf teknis >> Masukkan
2. Kode Javascript klien:
function CallMethod(AssemblyName,MethodName,Argus)
{
var args = "";
untuk(var i=0;i
args += Argus[i] + ",";
if(args.length>0) args = args.substr(0,args.length-1);
var xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
url = "AJAX/AJAX.czhenq?as=" + Nama Perakitan + "&me=" + Nama Metode +"&ar="+ args;
xmlhttp.open("POSTING",url,salah);
xmlhttp.kirim();
peringatan(xmlhttp.responseText);
}
3. Kerangka AJAX sederhana telah diimplementasikan. Sekarang tuliskan sepotong kode untuk diuji.
Gunakan AJAX Anda sendiri
1. Buat situs web baru dan gunakan HttpHandler yang baru saja Anda tulis. Dan daftarkan HttpHandler Anda di Web.config situs web, yang menunjukkan bahwa permintaan tersebut akan diproses menggunakan Handler yang Anda tulis. Penjelasan konten berikut: Semua permintaan yang diakhiri dengan "czq" akan diproses menggunakan "Czhenq.HttpHandlerFactory".
type="Czhenq.HttpHandlerFactory, Czhenq.AJAX"/>
2. Tambahkan halaman web, salin skrip tadi ke halaman, dan tambahkan metode yang ingin Anda panggil.
string pribadi Tambah(int i, int j)
{
kembalikan TextBox1.Text;
}
3. Tempatkan kontrol HiddenField pada halaman dan beri nama MajelisName. Dan tambahkan kode berikut di Page_Load:
string assemblyName = Czhenq.AJAX.Class1.Encode(
typeof(_Default).AssemblyQualifiedName);
NamaMajelis.Nilai = NamaMajelis;
var assemblyName = document.getElementById("AssemblyName"); var argus = new Array();argus.push("100");argus.push("200");CallMethod(assemblyName,"Tambah",argus)
Singkatnya, AJAX bukanlah teknologi baru. Ini hanyalah kombinasi organik dari beberapa teknologi yang sudah ada. Kita dapat memahami AJAX sebagai: AjAx adalah enkapsulasi JavaScript yang memanggil XmlHttp.
Terlampir adalah implementasi Encode dan Dencode:
string statis publik Encode (nilai string)
{
byte[] byte = ASCIIEncoding.ASCII.GetBytes(nilai);
kembalikan Convert.ToBase64String(byte);
}
Dencode string statis publik (nilai string)
{
byte[] byte = Konversi.FromBase64String(nilai);
kembalikan ASCIIEncoding.ASCII.GetString(byte);
}