Vanilla MVC4: Step 10 – Areas

In größeren Anwendungen nimmt die Anzahl der Controller, Models und Views starkt zu und damit auch eine gewisse Unübersichtlichkeit.

Mit MVC2 wurden die Areas eingeführt, um MVC-Anwendungen eine gewisse Modularität zu spendieren. Eine Area ist als Modul zu verstehen, dass in der Ordner-Struktur des Moduls wieder die globale Ordner-Struktur abbildet.

Eine Area wird ganz einfach hinzugefügt über: rechte Maustaste auf dem Projekt → Add/Hinzufügen…Area…

Unsere erste Area nennen wir GitHub. Angelegt wird die oben genannte Ordner-Struktur sowie eine eigene Web.config (Inhalt größtenteils nun bekannt) sowie eine Registrierungsklasse (Kindklasse von AreaRegistration) in der u.a. die Routen definiert werden.

mvc-area

Wir legen einen Controller an (HomeController) und mit einem Click auf die rechte Maustaste in der Action-Methode Index den dazugehörigen View (ohne festgelegtes layout). Außerdem kopiere ich deshalb schon mal die _ViewStart.cshtml.

Zunächst nun zu einem interessanten Fehler: Der Aufruf http://localhost:1487/Home/Index zeigt, dass der Controller schon gefunden(!) wird. In den globalen Views existiert aber natürlich kein View Home/Index. Wer sich die GitHubAreaRegistration-Klasse etwas näher angeschaut hat, entdeckt dort natürlich ein Route-Prefix /GitHub/. Damit dieses aber greift muss unsere Area aber tatsächlich registriert werden. Dies erledigt ein Aufruf einer statischen Methode der Basis-Klasse AreaRegistration zu Beginn der Application_Start-Methode in der Global.asax:

AreaRegistration.RegisterAllAreas();

Nun lässt sich der Area-Controller aufrufen über http://localhost:1487/GitHub/Home/Index.

Allerdings sind längst nicht alle Problem behoben (siehe About-Link auf der GitHub-Seite), doch dazu mehr im nächsten Posting.

Leave a Reply

Your email address will not be published. Required fields are marked *