Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

Asp.NET MVC – URL Routing Şemasını Fiziksel Kabuklama

Asp.NET MVC mimarisinin en gözde yanlarından birisi haliyle URL yapılarının okunabilirliği(Arama Motorları Açısından daha etkili – SEO) ve QueryString değerlerinin URL Routing yapılandırmasıyla daha nizamlı bir şekilde sayfalar arasında taşınmasıdır.MVC mimarisinde yazılımcılar esnek bir şekilde oluşturulan her sayfanın URL şemasını yapılandırmasına müdahale edebiliyor ve URL’de taşınacak değerlerin değişken isimlerini şemalarda anlamlı bir şekilde belirleyebiliyor.Bu özelliklere dayanarak bu makalenin ismini bu şekilde koymaya karar verdim.Bunun sebebi, MVC projelerinde üretilen linkler internet tarayıcılarında URL şemalarındakinin modeli olarak gösteriliyor.Haliyle Controller ve Action isimleri ister istemez yerini belli ediyor ve linkin URL şemasıda bir hayli anlaşılıyor.Böyle bir durumda kalıp her hangi bir sakatlığa maruz kalmamak için linkleri bir insan için daha okunaklı lakin bir açık bekleyen çakal için kapalı kutu olarak yapılandırabiliyoruz.Bu yapılandırma URL şemasında bir değişiklik gerçekleştirmiyor ama o şemayı fiziksel olarak başka bir kabuğa büründürüyor.Tabi ki de mantıksal olarak olay işleyişi yine olması gerektiği gibi devam ediyor.Şimdi gelin bu işlemin teknik olarak nasıl gerçekleştirildiğini inceleyelim.

Varsayalım ki, “Home(Controller).cs” isimli bir Controller sınıfımız mevcut ve içerisinde “Ornek” ve “Index” isimli iki Action metodumuz bulunsun.

    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }
        public ActionResult Ornek(int id, string adi)
        {
            return View();
        }
    }

Şimdi “Ornek” Action metoduna özel URL Routing şeması oluşturalım.(Eğer URL Routing şemalarını oluşturmayı bilmiyorsanız eğer öncelikle MVC 4.0 URL Routing Yapısı başlıklı yazıyı okumanızı tavsiye ediyorum.)

            routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );

            routes.MapRoute(
                name: "Ornek",
                url: "{controller}/{action}/{id}/{adi}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional, adi = UrlParameter.Optional }
            );

Gördüğünüz gibi “Default” isimli route varsayılan olarak parametresiz her Action için çalışacaktır.Lakin “Ornek” isimli routeu incelersek eğer “id” ve “adi” parameresi olan Action’lar bu şemaya yönlenecektir.

Bu makalede odaklanmamız gereken şema “Ornek” isimli olandır.Şimdi projeyi çalıştırıp “Ornek” Action’ını çalıştırırsak eğer (Örn id = 2, adi = Gençay parametre değerleriyle) URL şemasının nasıl oluştuğunu inceleyelim.

UrlRouting
Gördüğünüz gibi bu URL yapısında Controller ve Action bariz bir şekilde belli olmaktadır.Şimdi bu şemayı fiziksel olarak nitelendirip neticeyi birde öyle gözlemleyelim.Tek yapmamız gereken “Ornek” isimli URL Routing şemamızı aşağıdaki gibi ayarlamak.

            routes.MapRoute(
                name: "Index",
                url: "Ornek/{id}/{adi}",
                defaults: new { controller = "Home", action = "Ornek", id = UrlParameter.Optional, adi = UrlParameter.Optional }
            );

Gördüğünüz gibi “Ornek” routeunda “url” ve “default” parametrelerinde değişiklikler yaptık.”url” parametresinde yapılan değişiklikte fiziksel olarak URL’i belli etmeyecek kabuğumuzu hazırlamış oluyoruz.”default” parametresinde ise, bu kabuğun “Home” Controller’ın da ki “Ornek” isimli Action metotda çalışacağını belirtmiş oluyoruz.Yani…Mantıksal olarak aynı Controller ve Action’da çalışacak bu URL şemasını fiziksel olarak bir kabuğa bürümüş olduk.Projeyi derleyip çalıştırdığımız zaman “Ornek” Action’ını çağırdığımızda internet tarayıcısında aşağıdaki gibi bir linkle karşılaşacağız.

UrlRouting2

Gördüğünüz gibi yukarıdaki linkin “Home(Controller).cs” isimli Controller sınıfında bulunan “Ornek” isimli Action metodu çalıştırdığını anlamak pekte mümkün olmasa gerek. 🙂

Umarım fiziksel kabuklama diye nitelendirdiğim bu yazıyı sizlere anlatmak istediğim şekilde aktarabilmişimdir.
İyi çalışmalar dilerim…

Bunlar da hoşunuza gidebilir...

Bir cevap yazın

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

*