Bu yazımda tek proje kullanarak MVC Areas yapısını oluşturmayı ve kullanmayı göstermeye çalışacağım. Daha önce
buradaki yazımda birden fazla proje kullanarak MVC Areas yapısını oluşturmayı ve kullanmayı göstermiştim. Şimdi de tek proje üzerinde Areas yapısını oluşturma ve kullanmayı göreceğiz. Bu yapı ile hazırlayacağımız projeleri bölümlendirip, daha kolay daha organize daha kolay yönetilebilir ve geliştirilebilir bir yapı oluşturmuş oluyoruz. Ayrıca MVC ile gelen standart yapı dışına çıkıp (Views, Controller klasörlerinin olmaması), istediğimiz dizin yapısı ile MVC projeleri oluşturabiliriz. Bu şekilde çok esnek, çok kolay yönetilebilir, açık bir proje oluşturup, geliştirebiliriz. Şimdi bu Areas yapısını tek proje ile nasıl yapacağımıza bakalım.
Öncelikle Visual Studio ile MVC projemizi oluşturuyoruz. Bunun için
File ~ New Project sekmesini seçip, çıkan ekranda kullanacağımız dili,
Asp.Net MVC 2 Web Application seçeneğini seçip, diğer seçenekleri eksiksiz tamamlayarak projemizi oluşturuyoruz. Projemizi oluşturduktan sonra
Areas yapısını hazırlamak için projenin ana dizinine
Areas adında bir klasör oluşturuyoruz. Bu klasör altında oluşturacağımız alt sistemleri (Areas) tanımlayacağız. Ben paylaşacağım örnekte Blog ve Forum adında alt sistemler oluşturdum.
Yandaki resimden görüleceği gibi oluşturduğum alt sistemlerin içine de
Controllers,
Views klasörleri ile alt sistemlere ulaşılmak istendiğinde Url isteklerini karşılayacak olan tanımlamaları içeren
Routes.cs dosyasını (bu dosyanın içeriğini yazımın devamında bulabilirsiniz.) ekliyoruz. Bu yapıyı her alt sistem için hazırlıyoruz.
Alt sistemlerde yer alan
Controllers klasörü ile alt sistemleri kontrol eden mekanizmalar tanımlanmış oluyor.
Views klasörü içine sayfalarımızı (Views'ları - her bölüm için) tanımlıyoruz.
Routes.cs dosyası ile de alt sistemlerin hangi URL isteğinde çalışacağını, URL yapısının nasıl olacağını belirliyoruz.
Routes.cs ile tanımladığımız yapıların genel sistem ile çalışması için projenin ana dizininde yer alan
Global.asax dosyasında yer alan
RegisterRoutes metodu içinde
AreaRegistration.RegisterAllAreas(); diyerek alt sistemler için
Routes.cs dosyalarında tanımladığımız URL yapılarını da tüm proje için tanımlamış oluyoruz. Tüm bunları yaptıktan sonra tek proje ile Areas yapısını oluşturmuş oluyoruz. Bu şekilde bir sistemde birçok alt sistem tanımlayıp, daha sade daha kolay daha düzenli daha esnek bir proje hazırlamış oluruz.
Alt sistemlerde yer alan Routes.cs dosyasının içeriği ise şu şekilde olabilir (Hazırladığım örnekteki Blog alt sistemi için tanımlanan Routes.cs dosyasının içeriği).
namespace MvcAreas2.Areas.Blog
{
public class Routes : AreaRegistration
{
public override string AreaName
{
get { return "Blog"; }
}
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Blog_default",
"Blog/{action}/{id}",
new { controller = "Blog", action = "Anasayfa", id = "" }
);
}
}
}
Tüm bunları yaptıktan sonra MVC içinde yer alan link oluşturma metotlarını kullanırken Areas özelliğini de bildirmemiz gerekiyor. Ayrıca bu yapıyı kullanmak için MVC 2.0 Preview 2 kurulmuş olması gerekir. Her iki durum için gerekli olan bilgilere
buradaki yazımdan ulaşabilirsiniz.
Bu şekilde tek proje ile MVC Areas özelliğini nasıl kullanacağımızı görmüş oluyoruz. Tek proje ile Areas özelliğini sağlama ve kullanma birden fazla proje kullanarak Areas özellğini oluşturup kullanmaktan daha kolay. Bu yazıyı hazırlamak için kullandığım örnek projeyi
buradan indirebilir, inceleyebilirsiniz.
İyi Çalışmalar.
Kaynak