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.
Kodları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.