2014-04-23 18 views
5

Asp.Net arka planından geliyorum ve yeni bir proje için Asp.Net MVC'yi değerlendiriyorum. Büyük bir projeyi yeterince nasıl yapılandıracağımı göremiyorum.Asp.Net MVC5, büyük projelerin yapılandırılması. Alanlar?

Model/Görünüm/Denetleyici mimarisinden memnunum ve şu anda Çalışmaları'nı almaya çalışıyorum (bunun ne olduğu için oldukça karmaşık görünüyor).

Alanlar İçinde Alanlarınız var mı? Görünümleri dll'ye yerleştirebilir misiniz?

Burada gerçekten bir başlangıç ​​noktasına ihtiyacım var, büyük MVC projelerini nasıl yapılandıracağınızı gösteren kaynaklar var, sonuçta projede 100+ görüşün olacağını varsayalım, hepsini aynı klasörde istemiyorum. ideal olarak ben alt klasörler

herhangi bir yardım için

sayesinde istiyorum

Düzenleme: bir Görünüm klasöre her denetleyici haritalar, istediğim daha bu

 
Areas 
    Mail 
    Absence 
     SimpleAbsenceController.cs 
     ComplexAbsenceController.cs 
    Overtime 
     SimpleOvertimeController.cs 
     ComplexOvertimeController.cs 
    Etc 

EDIT2 gibi bir şey olduğunu görebilirsiniz : Belki de t Posta/Yokluğu için http://www.mystuff.com/SimpleAbsence/Index

/SimpleAbsenceController

Temelde ben bahsettiğimizi ne klasörler

+0

Anladığımdan emin değilim onun örneğin MiniRagnarok için aynı soruları sayesinde olacak değilim. Görünümler klasöründe, her bir denetleyici için ayrı klasörlere sahip olmanız gerekir. Çok fazla alt klasöre sahip olacak. – MiniRagnarok

+0

Bir alanı kendi denetleyicileri, modelleri ve görünümleri ile bir alt klasör olarak düşünebilirsiniz, yani kökle aynı yapıya sahip olabilirsiniz. Bölgelerdeki alanları neden istediğinizden emin değilsiniz - mümkün olup olmadığından bile emin değilsiniz! – markpsmith

+0

Beğendiğiniz herşeyi yönlendirebilirsiniz. Güzergâhınız, proje yapınızı Webformlarda olduğu gibi uydurmak zorunda değildir (teknik olarak, Web formları artık yönlendirme yapmaktadır, bu nedenle artık eşleşmeleri gerekmemektedir). –

cevap

7
Ben daha sonra bu bakabiliriz aynı zamanda başkalarına yardım etmek denemek ve bunlar gerçekten acemi sorular başkalarının çalışmalarını zayıflatmaktadır hissederken ben kendi soruya cevap nefret

, yani ...

(Tüm bunlar, ASP.NET MVC5, iyi kitap)

'un tamamını okumaktan ibarettir. Asp.Net MVC'de alt klasörleri veya dll'leri kullanma konusunda ne kadar esneklik olduğunu bilmek istedim. Bu cevap alt klasörlere soru sormaktadır.

  1. Sen diskteki klasörlerin açısından, bu derlenmektedir gibi-hiç denetleyicileri koyabilirsiniz, ama ...

  2. sen bölgelerde Hattın kullanmak Cevapları AreaRegistration.cs dosyası, alanını otomatik olarak alanın ad alanına yönlendirir.Yani, örneğin bir denetleyiciyi bir alana taşıyorsanız -must- ad alanını veya Url gibi yöntemleri değiştirin.Aksiyon başarısız olacaktır

  3. Görünümler bulundukları yerde kalmalıdır, yani Fred adlı bir denetleyici için bu yapının olması gerekir: kendi yönlendirme sistemini kullanarak tüm bu çalışabilirsiniz

 
View 
- Fred 
    - Action1 
    - Action2 
    - etc 

, muhtemelen özel bir rota ile ad soruna geçici olabilir ama bize göre sistem kadar çalışması gerekir bir aceminin olduğunu

01 kurallarını ihlal etmenin sonuçlarını tam olarak anlamak için yeterli olduğunu biliyorsunuz.

Yani, bir klasörde toplanmış birkaç yüz Görünümlü büyük bir projeye sahip olabileceğiniz anlamına gelir. Kontrolörlerin alt klasörler halinde göründüğü ve doğrudan onlardan Görünümlere haritalayabildiği kadar kötü değil.

Ayrıca yönlendirme sisteminde esneklik var, bu nedenle denetleyici diskte nerede olursa olsun istediğiniz herhangi bir URL'ye sahip olabilirsiniz!

örn. Bunu, bu Html.ActionLink veya bağlantıları doğrudan karşıt olarak Url.Action (veya equivilents) vardır kullandığınızdan emin olun yoksa

routes.MapRoute("NewRoute", "App/Do{action}", new { controller = "Home" }); 

NB gerekli hiçbir değişiklik olmadan
http://www.example.com/Home/Something için
http://www.example.com/App/DoSomething bu rota haritaları Yönlendirmeye göre doğru URL'leri üretmek için yeterince akıllı. Dediğim gibi

, tam acemi sorunları ancak emin diğerleri gerçek hayat projesi

+0

MVC5'teki Alanları kullanıp kullanmadığınıza emin değilim. Görünüşleri sadece kullandınız mı? Alanlardan kaçınmanızı tavsiye ediyor musunuz? Özel yönlendirme veya varsayılan MVC davranışını değiştirmek istemiyorum, başka bir deyişle onu basit tutmak istiyorum. Teşekkürler. – John

+0

Alanları kullandım, bir kez işe yaramayacak kadar kolay olan diş çıkarma sorunlarını geçtikten sonra. Tavsiye edilen. Görünümleri dll'lere koymaya baktım ama işe koyulsa da, proje devasa olmadıkça o rotayı aşmayacağım. – tony

+0

# 2 (adpacing), MVC4 sitesinden bir siteyi taşıma konusundaki sorunumu çözmeme yardımcı oldu. –

2

içine projemi yapılanma yolunu istiyorum: Ben den map can onun, bir yönlendirme söz konusu fazlasıdır burada çok kanaatli. Her nesnenin bir Denetleyiciye eşleştirilmesiyle birçok Denetleyiciye sahip olmayı tercih eden insanları gördüm. Ben de bir sürü görüşe sahip olmayı tercih eden insanları da gördüm. Benim örneğim, bizim ekibimizin örnek öğreticilerde göreceğiniz ile aynı olmayacağı ve yapmayacağına karar verdi.

Yaptığımız bir projeye, örneğin 200+ Views'u var. Site bir açık artırma ve perakende sitesidir.

Controllers 
    AccountController.cs 
    AdminController.cs 
    AuctionController.cs 
    HomeController.cs 
    PhotoController.cs 
    StoreController.cs 
    SupportController.cs 

Views 
    Account 
     DisplayTemplates 
     EditorTemplates 
      ChangePassword.cshtml 
     _Favorites.cshtml 
     Settings.cshtml 
    Admin 
    Auction 
    Home 
    Photo 
    Shared 
    Store 
    Support 

Bizim için tüm kısmi görünümleri önce bir altçizgiyle isimlendiririz. Ayrıca DisplayTemplates ve EditorTemplates'leri kullanıyoruz. Bütün bunlar, işleri ayrı tutmamıza gerçekten yardımcı oluyor. Kontrolörlerimizin rol veya fonksiyona göre bölünmüş olduğunu fark edeceksiniz. Tüm mantığımız modellerde olduğundan, kontrol cihazımızda birçok ActionResult bulunduğundan asla rahatsız olmadık.

+0

Lütfen yanlış anladım, ancak 100 web sayfasının farklı eylemlere sahip sayfa başına 1 denetleyiciye sahip olabileceğini varsayarak, bu klasördeki her eylemle birlikte denetleyici başına 1 adet 100 Görünüm klasörüne sahip olursanız lütfen beni düzeltin. Bu klasörleri daha fazla gruplayamaz mısın? – tony

+0

@tony Sayfa başına bir denetleyicimiz yok. Rol veya işlev başına bir denetleyicimiz var. Örneğimdeki her bir denetleyici ~ 30 Görüntüleme'ye sahip. Görüntüleme ve sayfalar bu arada çok farklı şeyler. – MiniRagnarok

+0

@tony Daha fazla kafa karıştırmak için, Fotoğraf Denetçisi için yalnızca Kısmi Görünümler yoktur. Yani bu Denetleyici için 0 sayfa var. – MiniRagnarok

İlgili konular