Bu yazımda Generic Handler ile Ajax işlemlerini nasıl yapacağımızı anlatmaya çalışacağım. Daha önce Asp.net ile Ajax işlemleri için birkaç farklı yöntem göstermiştim. Şimdi ise Generic Handler (.ashx) ile Ajax işlemleri gerçekleştireceğiz. Generic Handler, IHttpHandler sınıfını miras alan ve genelde HTTP üzerinden işlem yapan bir sınıf olarak açıklayabiliriz. Ajax işlemleri için bu sınıfı kullanacağız. Ancak diğer yöntemlere göre burada farklı bir durum var. Generic Handler ile Ajax işlemlerinde veri tipi yok. Diğer yöntemlerde veri tipi json idi. Şimdi Generic Handler ile Ajax işlemi için yapacağımız kodlamalara kısaca göz atalım.
Öncelikle yazacağımız Jquery ile Ajax metodu kodlarımıza bakalım.
function al()
{
$("#load").show();
$.ajax({
type: "POST",
url: "ajax.ashx",
//data ile parametre belirleyebiliyoruz.
//querystring mantığı diyebiliriz.
data: "numara=5&isim=mehmet",
success: function(msg){
$("#load").hide();
//dönen sonuç json tipinde olmadığı için
//direk olarak alıyoruz ve kullanıyoruz.
$("#sonuc").html(msg);
}
});
}
Jquery kodlarımızda dikkat edeceğimiz nokta yapılan işlemlerde kullanılan veri tipi json olmadığı için data kısmında ve Ajax işlemi sonucunda elde edeceğimiz verileri alırken yapacağımız kodlamaya dikkat etmeliyiz.(Dönen veri json tipinde ise
msg.d olarak, verinin tip yok ise direk olarak
msg şeklinde alabiliyoruz.) Daha sonra ise istekte bulunacağımız Generic Handler dosyamızın kodlarına bakalım.
<%@ WebHandler Language="C#" Class="ajax" %>
using System;
using System.Web;
using System.Web.UI;
using System.Web.SessionState;
public class ajax : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
System.Threading.Thread.Sleep(1000);
context.Response.Write("Numara : " + context.Request["numara"]);
context.Response.Write(" İsim : " + context.Request["isim"]);
context.Response.Write(" " + DateTime.Now.ToString("HH:mm:ss"));
}
public bool IsReusable
{
get
{
return false;
}
}
}
Görüldüğü Generic Handler kodlarımız ise böyle. Örnek olması açısından basit birkaç işlem yaptım. Ajax metodunda data kısmında gönderdiğimiz parametre değerlerini aldım ve ayrıca zaman bilgisini yazdırdım. Ancak bu yöntem çok daha kullanışlı ve çok faydalı işlemler yapabiliriz. Mesela Ajax ile dosya upload etmek için bu yöntem kullanılabilir. Umarım bu konu ile ilgili çalışmalar yapar ve ne zamandır yapmak istediğim olayı da gerçekleştiririm.
Projelerimize Generic Handler (.ashx uzantılı) dosyası eklemek için projemizde
Add New Item deyip
Generic Handler sekmesini seçmeliyiz.
Generic Handler ile yapmış olduğum basit örneği
buradan görebilirsiniz. Örnek dosyaları kodların tamamını verdiğim için paylaşmıyorum.
İyi Çalışmalar!