ASP.Net MVC Yönlendirme Eşlemesi Anlama

ASP.Net’teki MVC (Model Görünüm Denetleyici) mimarisi dünyasında gezinmek, özellikle de yeni başlıyorsanız zorlayıcı olabilir. Geliştiricilerin karşılaştığı yaygın sorunlardan biri yönlendirmedir - özellikle özel yönlendirmeleri denetleyicilere eşlemek. Bu yazıda sıkça karşılaşılan bir problemi ele alacağız: *.aspx dosyalarını bir PageController‘a eşlemek.

Problem: *.aspx‘ı PageController ile Eşleme

MVC’ye yeni başladığınızı ve ASPX uzantılarını kullanarak sayfalar sunmak istediğinizi hayal edin. Aşağıdakine benzer bir yönlendirme oluşturmaya çalışabilirsiniz:

routes.MapRoute(
   "Page",
   "{name}.aspx",
   new { controller = "Page", action = "Index", id = "" }
);

Ancak /Page.aspx gibi bir URL girerek bu yönlendirmeyi test ettiğinizde, yolu için denetleyicinin bulunamadığını belirten bir hata mesajıyla karşılaşabilirsiniz:

‘/Page.aspx’ yolu için denetleyici bulunamadı veya IController arayüzünü uygulamıyor. Parametre adı: controllerType

Bu hata sinir bozucu olabilir ve kaçırdığınız bir şey olup olmadığını sorgulamanıza neden olabilir.

Çözüm: Yönlendirme Eşlemesinde Sıra Önemli

Sorununuzun çözümünün basit bir yönlendirme sırası olduğunu bilmek size rahatlık verebilir. ASP.Net MVC, yönlendirmeleri kaydedildikleri sıraya göre işler. Bu, eğer varsayılan yönlendirme, özel yönlendirmelerinizden önce tanımlandıysa, öncelik alacağı anlamına gelir.

Sorunu Giderme Adımları

  1. Özel Yönlendirmenizi Taşıyın: *.aspx için özel yönlendirme eşlemenizin varsayılan yönlendirmeden önce tanımlandığından emin olun. Ayarlanmış kayıt aşağıdaki gibi görünmelidir:

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

Yönlendirme Nasıl Çalışır: Konvansiyon Üzerine Konfigürasyon

Yönlendirme mantığını daha da netleştirerek, MVC’nin Konvansiyon Üzerine Konfigürasyon olarak bilinen bir ilkeyi kullandığını belirtebiliriz. Bu, çerçevenin, açık bir yapılandırma yerine gelen isteğin nereye gitmesi gerektiğini tahmin etmeye çalıştığı anlamına gelir.

Ek Kaynaklar

ASP.Net MVC yönlendirmesini derinlemesine anlamak isteyenler için, ASP.Net’in ana yaratıcılarından biri olan Scott Guthrie, değerli bilgiler paylaşmıştır:

Her iki kaynak da MVC ve yönlendirme inceliklerini anlamanıza yardımcı olabilecek bol miktarda bilgi sunmaktadır.

Sonuç

Sonuç olarak, ASP.Net MVC’de *.aspx sayfalarını PageController ile başarılı bir şekilde eşlemek, yalnızca doğru kodu yazmaktan fazlasını gerektirir; yönlendirme kayıtlarının sırasını ve çerçevenin temel ilkelerini anlamayı da gerektirir. Özel yönlendirmelerinizin doğru bir şekilde önceliklendirildiğinden emin olarak, yönlendirme süreciyle ilişkili sinir bozucu hataları ortadan kaldırabilirsiniz.

Böylece, bir sonraki sefer MVC yönlendirmesinde kararsız kaldığınızda, sıralamanın önemli olduğunu hatırlayın ve bu yolculuğunuzu yönlendirecek iyi tanınmış kaynaklar arayın.