Asp.net MVC ActionMethodSelector Attribute

26 Ağu

Bu yazımızda controller action metodları çalıştığı durumlarda action metodunu kontrol eden kendi attribute sınıfımızı nasıl oluşturabileceğimiz üzerinde duracağız. Kendi özel attribute sınıfımızı oluşturmak için yazdığımız sınıfı ActionMethodSelectorAttribute sınıfından türetmemiz gerekiyor.

Bu sınıf ileri düzeyde oluşturulmuş bir sınıf olacak. Miraslama işlemi ile oluşturduğumuz sınıfa ActionMethodSelectorAttribute sınıfından gelen IsValidForRequest() adında tek bir metod olacaktır.

    public class AjaxMethod : ActionMethodSelectorAttribute

{

public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo)

{

if (!controllerContext.HttpContext.Request.IsAjaxRequest())

{

throw new Exception(“Bu metod [” + methodInfo.Name + “] sadece Ajax request için tanımlanmıştır.”);

}

 

return true;

}

}

 

Oluşturulan attribute bir action metoda şu şekilde uygulanmaktadır:

        [AjaxMethod]
        public ActionResult Unknown()
        {
            return View();
        }

Eğer Unknown() metoduna Ajax request haricinde bir request gelirse aşağıdaki gibi bir hata sayfasıyla karşılaşıyor olacağız.

Bir sonraki yazıda görüşmek üzere herkese iyi çalışmalar.