mehmetduran.com - Paylaşmak Güzeldir...
Asp.net MVC ile Routes Tanımlama ve Kullanma
Bu yazımda MVC teknolojisini incelemeye ve tanımaya devam ederek bu teknolojinin sağladığı kolaylıklardan olan Routes tanımlama ve kullanmayı göreceğiz. Routes ile MVC projemizde çeşitli alanlar (klasör mantığı) tanımlayıp, URL'de bu tanımlamaları çok rahat bir biçimde kullanacağız. Bu bizlere birçok kolaylık sağlıyor. Bir projemizde birçok farklı bölümü (Blog, Forum, vb.) bir arada oluşturma fırsatı veriyor ve daha büyük projeler geliştirmemize katkı sağlıyor diyebiliriz. Ayrıca URL'de kullanacağımız tanımlar ise en fazla katkıyı projemizin SEO değerine yansıtacaktır. Böylece basitçe ve çok değerli projeleri MVC teknolojisi ile rahatlıkla geliştirebileceğiz. Şimdi Routes tanımlamaya ve kullanmaya bakalım.

Öncelikle örnekte anlatacağım projenin yapısı aşağıdaki gibi olacak.

Asp.net MVC ile Routes Tanımlama ve KullanmaKodlarını paylaşacağım ve anlatacağım örnekte genel yapı resimdeki gibi olacak. MVC projemizi açtığımızda Views klasörü altında Home klasörü standart olarak gelmekte. Ancak biz istediğimiz isimde ve istediğimiz sayıda bu tanımlamaları yapabilmekteyiz. Görüldüğü gibi anlatacağım örnekte 3 bölüm yer almakta. Bu bölümleri ve altında yer alan view sayfalarını oluşturduktan sonra yapmamız gereken tanımlamalar var. Bu tanımlamalar ile oluşturduğumuz klasörleri (Routes mantığı) ve view sayfalarını tanımlamamız gerekiyor. Bu tanımlamayı projemizin Global.asax dosyası içinde Routes'ları tanımladığımız metot içinde yapacağız. Bu tanımlamayı yaptıktan sonra işimiz bitmiyor. MVC içinde bu viewsları ve routes'ları kontrol edecek olan Controller'ları tanımlamız gerekiyor. Bu tanımlamaları da projemizde yer alan Controllers klasörü altında ekleyeceğimiz kod dosyaları ile yapmaktayız. Tüm routes'ları tek bir dosya içinde tanımlayabileceğimiiz gibi örnekte yaptığım gibi her bir klasör kontrolü için ayrı ayrı kontrol dosyası ekliyoruz ve bu dosya içinde kontrol olayını tanımlamış oluyoruz. Tüm bunları yaptıktan sonra işlemlerimiz tamamlanmış olup bu yapıları kullanmak için link oluşturmamız ve kullanıcıların bu yapılara yönlerdirmek gerekiyor. Bu işlemi de aşağıda html bölümde şu şekilde yapıyoruz.

 
    // Sonuçta oluşan linkimiz : http://siteadi/Blog/Anasayfa
    <li><%= Html.ActionLink("Blog", "Anasayfa", "Blog") %></li>
 
    // Sonuçta oluşan linkimiz : http://siteadi/Blog/Kategoriler
    <li><%= Html.ActionLink("Kategoriler", "Kategoriler", "Blog") %></li>
 
    // Sonuçta oluşan linkimiz : http://siteadi/Forum/Anasayfa 
    <li><%= Html.ActionLink("Forum", "Anasayfa", "Forum") %></li>

Html kodları yaptıktan sonra örnek proje paylaşmayacağım için diğer bölümlerin kodlamalarına da bakalım. Öncelikle Routes'ları tanımlayacağımız Global.asax dosyamız şöyle olmalı.

  public class MvcApplication : System.Web.HttpApplication
  {
    public static void RegisterRoutes(RouteCollection routes)
    {
      routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
      routes.MapRoute("Default", "{controller}/{action}/{id}", new { controller = "Home", action = "Anasayfa", id = "" });
      routes.MapRoute("Blog", "{controller}/{action}", new { controller = "Blog", action = "Anasayfa" });
      routes.MapRoute("Forum", "{controller}/{action}", new { controller = "Forum", action = "Anasayfa" });
    }
 
    protected void Application_Start()
    {
      RegisterRoutes(RouteTable.Routes);
    }
  }

Klasörleri tanıyan ve kontrol eden Controller dosyalarında yer alan kodlamalar ise şöyle olmalı.

  /*HomeController*/
  namespace MvcApplication2.Controllers
  {
    public class HomeController : Controller
    {
      public ActionResult Anasayfa()
      {
        return View();
      }
      public ActionResult Hakkimizda()
      {
        return View();
      }
      public ActionResult Iletisim()
      {
        return View();
      }
    }
  }
 
  /*BlogController*/
  namespace MvcApplication2.Controllers
  {
    public class BlogController : Controller
    {
      public ActionResult Anasayfa()
      {
        return View();
      }
 
      public ActionResult Kategoriler()
      {
        return View();
      }
    }
  }
 
  /*ForumController*/
  namespace MvcApplication2.Controllers
  {
    public class ForumController : Controller
    {
      public ActionResult Anasayfa()
      {
        return View();
      }
    }
  }

Görüldüğü gibi MVC teknolojisinde Routes tanımlamayı ve kullanmayı bu şekilde özetleyebiliriz. MVC teknolojisini ben de yeni öğrenmekteyim ve ilk olarak Routes konusunu anlatmak, sayfalarda yapılacak olan kodlamaları, veritabanı işlemlerini anlatmaktan daha ağır bastı. Bu yazımdan sonra söylemiş olduğum diğer konulara ve MVC'de Ajax işlemlerine adım atacağız. Umarım o yazılarımı ve örneklerimi mümkün olan en kısa sürede hazırlarım.

İyi Çalışmalar.
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Kullandığım Email Sınıfı (Çoklu Mail ve Dosya Gönderimi) Bloğumda ve Projelerimde Kullandığım RSS Sınıfı Asp.net MVC (Model View Controller) - Giriş Stajım Microsoft Yaz Okulu'nda Asp.net MVC'de Özel ActionResult Oluşturma
Yorumlar
Yorum Yaz
RSS Yorum Takibi
Ali Turhan 14 Nisan Salı 2009 23:43 #1
Hocam yukarıdaki örnek için teşekkürler. ben sql serverden veri çekerek böyle bi yapı oluşturmak istiyorum bunu nasıl yapabilirim.Albümün içindeki birden fazla slide` nasıl çağırabilirim.
Mehmet Duran 14 Nisan Salı 2009 23:52 #2
Merhaba. MVC`de veri çekmek ile klasik Asp.net`te veri çekmenin pek farkı yok. Slide`ları çağıracağın sayfaya (view) yüklemek istediğin dataları yüklemelisin ve view içinde slaytları oluşturabilirsin. View`a data yüklemek için controller içinde yazdığımız ActionResult metodunu kullanmalısın.
Ali Turhan 15 Nisan Çarşamba 2009 00:04 #3
Hocam bemim kastettiğim mvc değildi zaten normal asp.net içindi ama sql cümleciğini olşturamadım bir türlü örenğin albümün id si yaz olsun diğer tablodada id si yaz olan resimler olsun işte ben bu yapıyı xml formatına dönüştürmeliyim
Mehmet Duran 20 Nisan Pazartesi 2009 10:57 #4
Anladığım kadarıyla bir slayttaki fotoğrafları çekip bu bilgileri xml bir belge olarak kaydetmek istiyorsun. Bunun için yapacağın kodlamada slayt id`sini alıp o slayta ait fotoların bilgilerini xml dokümana aktarmalısın. Nette özellikle flash uygulamarında buna benzer uygulamalar var. Onlardan faydalanabilirsin.
Ahmet Yeniay 18 Ekim Pazartesi 2010 15:58 #5
Yazıda paremetre kabul eden fonksiyonlarada yer verilse daha faydalı olacakmış. Ellerinize sağlık.
Mehmet Duran 18 Ekim Pazartesi 2010 16:02 #6
@Ahmet, buradaki yazımda parametreli fonksiyonlara örnek teşkil eden birkaç kod bloğu mevcut.
huseyin 11 Mart Cuma 2011 20:26 #7
burada routes.maproute tanımlamasak da doğru çalışıyor. bunun sebebi nedir?hangi durumlarda tanımlamamız doğru olur?yani sadece parametreli methodlar tanımlarken mi global.asax.cs deki dosyayı güncellememiz doğru olur?
Mehmet Duran 08 Nisan Cuma 2011 22:42 #8
@huseyin, yaptığın tanımlamalar aslında birer şablon. Sen linkleri tanımladığın şablonlardan hangisine göre yaparsan o şablon çalışır. Birden fazla şablon tanımlayabilirsin ama sonuçta oluşturduğun link ve gelen istek hangi şablona uyuyor ise o çalışır. Eğer gelen hiçbir tanıma uymuyorsa hata alırsın.
İsim :
Site :
Yorum :

Buradan bu yazıya ait yorumları RSS olarak takip edebilirsiniz.

Bu servis ile yazılara eklenen yorumları RSS ile takip ederek konu ile ilgili başkaları tarafından yapılan yorumları veya konuyla ilgili sorduğunuz sorulara verilen cevapları görebilirsiniz.
Büyük işler gibi, büyük düşüncelerinde davula ihtiyaçları yoktur.
Bölümler
Yazılar
Arşiv
Arama
Linkler
Site İçi Arama
Son Zamanlarda Ne Yapıyorum ?
İstatistikler - Araçlar - Reklam
İstatistikler
Sayaç
Mehmet Duran | mehmetduran.com | Copyright © 2009