Makale Özeti

Önceki yazımda ASP.NET MVC uygulamalarda routing yapısına ufak bir giriş yapmıştık.Bu yazıyı okumaya başlamadan önce incelemenizde fayda olacaktır. * ASP.NET MVC - Routing Giriş Artık yavaş yavaş hızlanma zamanı geldi. Bu yazımda ASP.NET MVC uygulamada kendi route yapımızı oluşturmayı ve Standart ayarların olduğu Global.asax dosyasına hakim olup nasıl değiştirebileceğimizi öğreneceğiz. ASP.NET MVC uygulamalarındaki varsayılan route table yapısı çoğu örnekle çok güzel çalışmaktadır. Ama sizin için bu yapı her zaman doğru sonucu vermez ve sizde ihtiyaçlarınız doğrultusunda kendi route table oluşturmak zorunda kalırsınız.

Makale

Önceki yazımda ASP.NET MVC uygulamalarda routing yapısına ufak bir giriş yapmıştık.Bu yazıyı okumaya başlamadan önce incelemenizde fayda olacaktır.

* ASP.NET MVC - Routing Giriş

Artık yavaş yavaş hızlanma zamanı geldi. Bu yazımda ASP.NET MVC uygulamada kendi route yapımızı oluşturmayı ve Standart ayarların olduğu Global.asax dosyasına hakim olup nasıl değiştirebileceğimizi öğreneceğiz.
ASP.NET MVC uygulamalarındaki varsayılan route table yapısı çoğu örnekle çok güzel çalışmaktadır. Ama sizin için bu yapı her zaman doğru sonucu vermez ve sizde ihtiyaçlarınız doğrultusunda kendi route table oluşturmak zorunda kalırsınız.

Hayal edin , bir blog hazırladınız ve tarihsel olarak blog yazılarınızı görüntülemeniz lazım :
/Archive/12-25-2009

Bunun için Global.asax dosyasına birkaç değişiklik yapmamız gerekiyor. Kullanıcının karşısına hata ekranı düşmesini istemiyorsak.

using System.Web.Mvc;

using System.Web.Routing;

 

namespace CustomRouteMakale

{

 

    public class MvcApplication : System.Web.HttpApplication

    {

        public static void RegisterRoutes(RouteCollection routes)

        {

            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

 

            routes.MapRoute(

               "Blog",                                              // Route name

               "Archive/{entryDate}",                           // URL with parameters

               new { controller = "Archive", action = "Entry"// Parameter defaults

           );

 

            routes.MapRoute(

                "Default",                                              // Route name

                "{controller}/{action}/{id}",                           // URL with parameters

                new { controller = "Home", action = "Index", id = ""// Parameter defaults

            );                   

 

        }

 

        protected void Application_Start()

        {

            RegisterRoutes(RouteTable.Routes);

        }

    }

}


Route Table yerleştirirken Global.asax dosyasında ki sıra çok önemlidir. Bu sebepten yazdığımızı Table varsayılan Table dan önce yazmanız gerekmektedir. Eğer sıralamaya dikkat etmeden yazarsanız istekler varsayılan able üzerinden döner.
Yazdığımız route table için istekler /Archive/ kısmı ile başlar ve aşağıdaki gibi şekillenebilir.
/Archive/12-25-2009
/Archive/10-06-2009
/Archive/apple

Yukarıda yazdığımız Route Table da istekler Controller içindeki Archive classının içindeki Entry fonksiyonunda çözümlenmektedir.
Bu kodu yazmadan önce sol taraftaki solution explorera gelip controller klasörü üzerinde sağ tuş deyip add controller deyip controller ismini ArchiveController veriyoruz.

    public class ArchiveController : Controller

    {

 

        public string Entry(DateTime entryDate)

        {

            return "You requested the entry from " + entryDate.ToString();

        }

 

    }


Unutulmaması gereken bir nokta Entry Fonksiyonu sadece DateTime tipinden bir değer kabul eder ve gelen Url'deki değeri Convert edemez.

SONUÇ

Makalemizin sonucunda Global.asax dosyamızı nasıl güncellediğimizi, Blog senaryosu üzerinden ne gibi değişikler yaptığımızı ve ArchiveController.cs tarzı bir class içinde neler olabileceğini gördük. Bir sonraki makalemizde Route Table üzerindeki kısıtları inceleyip , nasıl düzeltebileceğimizi öğreneceğiz.

Volkan KORKMAZ
Microsoft Certified Business Management Solutions Specialist
volkankorkmaz@gmail.com
http://www.volkankorkmaz.net

Kaynak
ASP.NET MVC