Makale Özeti

Bu yazımızda MVC Framework 'te sıklıkla kullanılan Asp.Net Routing yapısını detayları ile incelemeye çalışıyoruz. Ana konumuz Route Oluşturma Kısıtlarıdır.

Makale

Route Oluşturma Kısıtları

Yazımızda şu ana kadar Route genel yapısını ve kendimize özgü route ları nasıl oluşturabileceğimizi incelemeye çalıştık.

Route table oluşturmak istediğimizde projemizin içerisinde yer alan global.asax dosyasının içerisine oluşturuyoruz. Ayrıca bu dosya içerisinde varsayılan olarak işlemlerimizde kullanmak üzere route map yer almaktadır. Şimdi ise route map oluştururken dikkat etmemiz gereken noktalara değinmeye çalışacağız.

İnternet tarayıcımız üzerinden istekte bulunduğumuzda işlemleri algılaması için gerekli yazım kuralları vardır. İlk olarak bu kurallara göz atalım.

Global.asax
ausing System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Routing;

namespace MvcApplication1
{
     // Note: For instructions on enabling IIS6 or IIS7 classic mode,
     // visit http://go.microsoft.com/?LinkId=9394801

    public class MvcApplication : System.Web.HttpApplication
    {
          public static void RegisterRoutes(RouteCollection routes)
          {
              routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

              routes.MapRoute(
                     "Urun",
                     "Urun/{urunId}",
                     new { controller = "Urun", action = "Detay" }
              );


              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);
          }
     }
}

Yukarıda verdiğimiz kod bloğu yardımıyla kısıtlarımızı açıklamaya başlayalım. İlk kısıdımız route ismi ile ilgili. Örneğimiz için route ismi Urun ‘dür. Urun ‘u controller sınıfının isminden almaktadır. UrunController isimli controller sınıfının adı olan Urun kullanılmaktadır.

Controller\UrunController.cs
using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        public ActionResult Detay(int urunId)
        {
            return View();
        }
    }
}

Controller sınıfının içerisinde Route ile map edilmesi için hazırlanan metoda dikkat edelim. Bu tür metotların oluştururken dikkat etmemiz gereken en temel koşul route table belirttiğimiz yolların tam olarak eşleşmesidir. Oluşturulan metodun adı ile route map de belirtmiş olduğumuz action ‘nın aynı olması ve action ile belirtilen şu parametre ile gelecek denilen değerinde aynı olması gerekmektedir. Bu tür hazırlanmış örnek yukarıdaki kod parçasında yer almaktadır.

Bu işlemlerimiz sonucunda internet penceremizin adres çubuğuna;

• URL/Urun/3
• URL/Urun/9
• URL/Urun/12121

Kabul edilirken,

• URL/Urun/Araba
• URL/Urun/10–10–2008

Kabul görmemektedir. Kabul görmeyen parametrelerden biri ile uygulamamızı denersek aşağıdaki gibi bir sonuç ile karşılaşırız.



Hatalı parametre girdiğimiz durumda “girdiğiniz parametreyi dönüştüremiyorum, parametre sonucunda parametrenize boş değer dönüyor” gibi bir mesaj vermektedir. Boş değer girme sorununu parametrenin tipini nullable girerek çözebiliriz.

Not: Yaptığınız işlemler sonucunda hala parametre almıyor ya da sayfa bulunamadı hatası veriyorsa oluşturduğunuz controller sınıfına ilişkin view ‘ı oluştururak sorunu çözebilirsiniz.

Yazımız boyunca MVC Framework 'te sıklıkla kullanılan Asp.Net Routing yapısını detayları ile incelemeye çalıştık.

Herkese mutlu günler diliyorum.

Turhal Temizer
info@turhaltemizer.com
http://turhal.blogspot.com