Generik Handler Dosyaları (Ashx Dosyaları)

Kodla Büyü

togius

Süper Üye
Süper Üye
Mesajlar
1,728
Bunlar genellikle Ajax işlemleri yaparken kullanılır. Web sayfası içeriğini okumaya ve sayfaya cevap göndermeye yarar.

Örnek vermek gerekirse.

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.
--> Alıntı: Mehmet DURAN Blog.

Şimdi Generic Handler ile Ajax işlemi için yapacağımız kodlamalara kısaca göz atalım.

Kod:
<script type="text/javascript" src="Scripts/jquery-1.4.1.js"></script>
    <script type="text/javascript">
        $(document).ready(function () {

            $.ajax({
                type: "POST",
                url: "ajax.ashx",
                //data ile parametre belirleyebiliyoruz.
                //querystring mantığı diyebiliriz.
                data: "numara=5&isim=mehmet",
                success: function (msg) {
                    //dönen sonuç json tipinde olmadığı için
                    //direk olarak alıyoruz ve kullanıyoruz.
                    $("#sonuc").html(msg);
                }
            });
        });   
    </script>

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. Daha sonra ise istekte bulunacağımız Generic Handler dosyamızın kodlarına bakalım. Solution Explorer penceremizde Add New Item… komutuna tıklayıp Generic Handler nesnesini seçelim ismini ajax verelim.

<%@ WebHandler Language="C#" Class="ajax" %>
using System;
using System.Web;
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;
}
}

}

Not: jquerymizdeki $.ajax ifadesi aldatmasın bu bizim oluşturduğumuz generic handler adımız değil. Asenkron http taleplerini işlemesi için belirtilen url mize buda bizim ashx dosyamız oluyor ona gönderir.

Html kodumuz
Kod:
<div id="sonuc">
    </div>
 
Geri
Üst