Asp.NET MVC 5 – Attribute İle Routing Yönlendirmesi[Attribute Routing]

Asp.NET MVC 5 sürümü öncesinde Routing işlemlerinin nasıl yapıldığını Asp.NET MVC – URL Routing Şemasını Fiziksel Kabuklama başlıklı yazımda güzel bir şekilde irdelemiştik.Bu yazımda ise Asp.NET MVC 5 projesinde Attribute ile oldukça kısa ve kolay bir şekilde Routing yönlendirmesini inceleyeceğiz.

Asp.NET MVC 5 ile Attribute Routing diye nitelendirilen yönlendirme tekniğini kullanabilmek için öncelikle yapmamız gereken temel aşama “RouteConfig.cs” sınıfının “RegisterRoutes” isimli static metodunda “routes.MapMvcAttributeRoutes();” metodunu çalıştırmaktır.

        public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapMvcAttributeRoutes(); ********
            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
        }

Yukarıda “RouteConfig.cs” sınıfının içeriğini görmektesiniz.Dikkat ederseniz bahsettiğim metodu yıldızlarla(*) gösterdiğim alanda çağırdım.

Ek olarak Attribute Routing yönteminde kullanacağımız Attribute’un prototipi aşağıdaki gibi olacaktır.

[Route("yonlendirme-adresi")]

Artık bu işlemi yaptıktan sonra Attribute Routing yönlendirmelerini hızlı bir şekilde yapabiliriz.

Hazırlık olarak aşağıda aşama aşama Routing tekniğini görmeden önce, üzerinde örneklendirme yapacağımız “Home(Controller).cs” isimli Controller sınıfımızı oluşturup içerisinde “Index” ve “About” isimlerinde Action metodlarımızı oluşturalım.

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            ViewBag.Message = "Anasayfa";
            return View();
        }
        public ActionResult About()
        {
            ViewBag.Message = "Hakkımda";
            return View();
        }
    }

Yukarda gördüğünüz gibi hazırlıklarımız yaptık.Artık Attribute Routing tekniğimizin aşama aşama anlatımına geçebiliriz.
1. Basit(Sade) Routing
Herhangi bir Controller sınıfında bulunan herhangi bir Action metoda basit(sade) bir şekilde yani parametresiz bir Routing(yönlendirme) işlemi nasıl yapılır inceleyelim.(Tabi biz burada yukarıda hazırladığımız “Home(Controller).cs” isimli Controller sınıfını ve içindeki Action metodlarını kullanarak örneklendirme yapacağız.)

Mesela “Home(Controller).cs” isimli Controller sınıfımızda bulunan “Index” isimli Action metoda Attribute Routing ile yönlendirme işlemi yapalım.

    public class HomeController : Controller
    {
        .
        .
        .
        [Route("Anasayfa")]
        public ActionResult Index()
        {
            return View();
        }
        .
        .
        .
    }

Gördüğünüz gibi “[Route]” Attribute’u ile yönlendirme işlemimizi yapıyoruz.”Index” Action metodunu “Anasayfa” değerine yönlendiriyoruz.
Programımızı derleyip çalıştırdığımızda ise,
asp.net 5 - attribute routing
ekran görüntüsünde gördüğünüz gibi yönlendirme başarılı bir şekilde gerçekleştirilmiş olacaktır.

Attribute Routing ile yönlendirilmiş Action metodlara ActionLink metodu ile yönlendirme yaparsak eğer oluşturulan link nasıl oluyormuş hemen inceleyelim.(Bu gözümden kaçar mı, kaçmaz! 🙂 )

@Html.ActionLink("Anasayfa", "Index", "Home")

Programımızı derleyip çalıştıralım.
asp.net 5 - attribute routing 2
Gördüğünüz gibi Attribute Routing ile yönlendirilmiş değerde bir link yapılandırılması gerçekleştiriliyor.
2. Parametreli Routing
Şimdide, herhangi bir Controller sınıfında bulunan herhangi bir Action metoda parametreli bir şekilde Routing(yönlendirme) işlemi nasıl yapılır inceleyelim.(Tabi ki de gene yukarıdaki sınıflarımızdan örneklendirme yapacağız.)

Bu örneklendirmemizde ise “Home(Controller).cs” Controller sınıfımızdaki “About” isimli Action metodumuzu kullanalım.”About” Action metodumuza “ad” ve “soyad” isimli iki parametre gönderelim.

    public class HomeController : Controller
    {
        .
        .
        .
        [Route("Hakkimizda/{ad}/{soyad}")]
        public ActionResult About(string ad, string soyad)
        {
            ViewBag.Message = ad + " " + soyad;
            return View();
        }
        .
        .
        .
    }

Yukarıdaki kodu derleyip çalıştırdığımız zaman ise,
asp.net 5 - attribute routing 3
ekran görüntüsünde gördüğünüz gibi yönlendirme gerçekleştiriliyor.Tarayıcıdan manuel olarak kendi ad ve soyadımı verdiğim için ekranda benim ismim geçmektedir.

Eğer bu şekilde de ActionLink metodunu denersek aşağıdaki gibi bir link yapılandırması gerçekleştirmektedir.

@Html.ActionLink("Hakkımda", "About", "Home", new { ad = "Gizem", soyad = "IsIk" }, null)

asp.net 5 - attribute routing 4

Sonuç olarak kompleks olmayan yönlendirme işlemlerini Attribute Routing ile gerçekleştirebilir, hızınıza hız katabilirsiniz.Basit isimlendirmelerde çok pratik bir yöntem olduğu için zamandan büyük tasarruf sağlamış olacaksınız.

Hepinize iyi çalışmalar diliyor, sonraki yazılarımda görüşme ümidiyle bu yazımı burada sonlandırıyorum.

Bunlar da hoşunuza gidebilir...

1 Cevap

  1. 28 Haziran 2017

    […] projenizi inşa ederken, oluşturulan adreslerin şablonlarını RouteConfig.cs dosyası yerine Route Attribute özelliğini kullanarak yapmayı tercih ettiğiniz durumda sizi karşılayacak olan olası bir hata […]

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

CAPTCHA (Şahıs Denetim Kodu) Resmi

*

Copy Protected by Chetan's WP-Copyprotect.