mehmetduran.com - Paylaşmak Güzeldir...
Asp.net MVC Areas (Tek Proje Kullanarak)
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.

Asp.net MVC Areas (Tek Proje Kullanarak)Ö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
Bookmark and Share
Bu Yazıyı Değerlendirin.
Konuyla İlgili Olabilecek Diğer Yazılar Asp.net MVC'de Dosya Upload İşlemleri (Multi Uploading) alperocalan.com | Hasan Alper Öcalan - Site Tanıtımı Türkiye'de Hosting Artık daha.net! jQuery ile 'Yukarı Çık' Uygulaması Tasarımda Değişiklik
Yorumlar
Yorum Yaz
RSS Yorum Takibi
sadri 28 Nisan Çarşamba 2010 17:33 #1
AreaRegistration.RegisterAllAreas(); kısmını Application_Start içine yazmalıyız aksi halde çalışmıyor .
Mehmet Duran 28 Nisan Çarşamba 2010 21:32 #2
Bu konuyla ilgili olarak yazımda uyarıda bulunmuştum. Global.asax içindeki RegisterRoutes eventında AreaRegistration.RegisterAllAreas(); diyerek tanımladığımız diğer area'ların routes bilgilerini belirtmemiz gerekiyor.
İ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.
Kimse sana senden iyi öğüt veremez.
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