Makale Özeti

Bu yazımda sizlere ASP.NET MVC uygulamaları için önemli olan ASP.NET Routing konusundan söz edeceğim.

Makale

Bu yazımda sizlere ASP.NET MVC uygulamaları için önemli olan ASP.NET Routing konusundan söz edeceğim. Makalemize başlamadan önce ASP.NET MVC konusunda aşağıdaki makaleleri incelemenizde fayda olacaktır :

* ASP.NET, MVC ile Kan Tazeliyor
* ASP.NET MVC Framework
* ASP.NET MVC Framework'e Genel Bakış

ASP.NET Routing Modülü özelliği ASP.NET MVC uygulamasına gelen tarayıcı isteklerini haritalamaktır. Bu yazının sonunda standart Routing tablo haritalarının kontroller için nasıl kullanıldığını öğrenmiş olacağız.

STANDART ROUTE TABLE KULLANIMI

Yeni bir ASP.NET MVC uygulaması oluşturduğunuz zaman uygulama otomatik olarak ASP.NET Routing için yapılandırılmış olarak oluşmaktadır.. ASP.NET Routing işlemi 2 yerde kontrol altında tutulur.
İlk olarak, ASP.NET Yönlendirme başvurunuzu Web yapılandırma dosyası(Web.config dosyası) etkinleştirilmiştir.Bu yönlendirme Web.Config dosyasında 4 sectionda yer alır:

* system.web.httpModules
* system.web.httpHandlers
* system.webserver.modules
* system.webserver.handlers

Bu sectionları silerken çok dikkatli olun yoksa uygulamanız çok uzun süre dayanamaz.
İkinci ve daha önemlisi, bir rounting tablosu uygulamanın Global.asax dosyasında oluşturulacaktır. Global.asax dosyası, ASP.NET uygulamalarının yaşam olaylarını içeren özel bir dosyadır. Routing tablosu Application Start olayında oluşmaktadır.

Global.asax Dosyası

using System;

using System.Collections.Generic;

using System.Linq;

using System.Web;

using System.Web.Mvc;

using System.Web.Routing;

 

namespace MvcMakale

{

 

    public class MvcApplication : System.Web.HttpApplication

    {

        public static void RegisterRoutes(RouteCollection routes)

        {

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

 

            routes.MapRoute(

                "Default",                                              // Route Adı

                "{controller}/{action}/{id}",                           // URL Parametreleri

                new { controller = "Home", action = "Index", id = ""// Standart Parametreler

            );

 

        }

 

        protected void Application_Start()

        {

            RegisterRoutes(RouteTable.Routes);

        }

    }

}



MVC uygulamamız ilk çalıştığında , Application Start fonksiyonu çağrılır. Bu method RegisterRoutes fonksiyonu çağırarak , route tablosunu oluşturur.
Standart Route tablosu sadece bir tane route içerir. Standart route tablosuna bakıldığında ilk segment url controller adını, ikincisi url nin action kısmını ve son bölümde parametreyi gösterir.

Web tarayıcınızın adres çubuğuna aşağıdaki URL'yi girdiğinizi hayal edin:

/Home/Index/3

Standart Route haritalar için de aşağıdaki parametreler için bu URL:

controller = Home
action = Index
id = 3

Ne zaman URL /Home/Index/3 şeklinde olursa, aşağıdaki kodu isteği çalıştırılır:

HomeController.Index(3)

Birkaç örnek bakarak varsayılan route haritalarının nasıl URL'leri kontrol işlemlerinde kullanıldığını inceleyelim.Tarayıcınızın adres çubuğuna aşağıdaki URL'yi girdiğinizi varsayın:
/Home
Bu url'yi yazdığınızda varsayılan HomeController.cs içindeki Index() fonksiyonunu çağıracaktır

HomeController.cs

using System.Web.Mvc;

 

namespace MvcApplication1.Controllers

{

    [HandleError]

    public class HomeController : Controller

    {

        public ActionResult Index(string id)

        {

            return View();

        }

    }

}



HomeController class'ı içinde Index() method'u sadece tek bir parametre alabilir. /Home Url'sini yazdığımız zaman Index() parametre almadan da değeri çağırabiliriz. Eğer bu tanımlamayı class'ımızda düzenlemezsek MVC Framework hata vericektir.

HomeController.cs(Index Methodu Parametresiz)

using System.Web.Mvc;

 

namespace MvcApplication1.Controllers

{

    [HandleError]

    public class HomeController : Controller

    {

        public ActionResult Index()

        {

            return View();

        }

    }

}


Index() methodu bazen parametre kabul etmeyebilir. Bu tarz uygulamalarda parametrenin uygulama dışı olduğunu belirtmek için kodu aşağıdaki gibi düzenlememiz gerekmektedir.

HomeController.cs

using System.Web.Mvc;

 

namespace MvcApplication1.Controllers

{

    [HandleError]

    public class HomeController : Controller

    {

        public ActionResult Index(int? id)

        {

            return View();

        }

    }

}


Index() Methoduna integer bir parametre geldiğinde de HomeController kodunu aşağıdaki gibi güncellememiz gerekir. Eğer bu tanımlamayı gerçekleştirmezseniz resimdeki gibi bir ekranla karşılaşırsınız.

HomeController.cs(Index Methodu Parametreli)

using System.Web.Mvc;

 

namespace MvcApplication1.Controllers

{

    [HandleError]

    public class HomeController : Controller

    {

        public ActionResult Index(int id)

        {

            return View();

        }

    }

}



SONUÇ

Bu yazımızda ASP.NET MVC Routing olayına bir giriş yaptık. ASP.NET MVC uygulamalarında URL'den gelen değerlerin nasıl bir yol izleyeceğinin haritasını oluşturduk. Bundan sonraki yazımızda kendi Routing haritamızı nasıl oluşturacağımızı öğreneceğiz.

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