Wie strukturiert man eine ASP.NET MVC-Anwendung mit einer pro-Feature-Organisation anstelle eines Artefakts?

9

Ich würde gerne wissen, wie ich eine Web-Anwendung strukturieren kann, indem ich einen Ordner pro Feature (Kunden, Bestellungen) anstelle eines Ordners pro Artefakttyp (Controller, Ansichten) verwende; Dies scheint eine viel bessere Möglichkeit zu sein, große Projekte mit vielen Funktionen zu organisieren, aber ich kann keine Informationen darüber finden.

Ich denke nicht, dass die Verwendung von Bereichen eine Lösung wäre, da die Verwendung eines Bereichs pro Feature das Erstellen vieler verschachtelter Ordner erfordern würde.

Ich denke, dass das, was ich tun möchte, durch die Anpassung einer IViewEngine-Implementierung möglich sein sollte, aber ich bin mir nicht sicher.

Hat jemand versucht, dies zu tun?

    
gschuager 10.02.2012, 11:38
quelle

2 Antworten

2

Sie können den Speicherort der Ansichten ändern, wenn Sie möchten. Ein Beispiel, Ссылка .

ASP.NET MVC ist einfach zu entwickeln, weil es eine Konvention über die Konfiguration gibt. Wenn Sie diese Konventionen wirklich ändern wollen, können Sie; Sie werden jedoch feststellen, dass Sie viel mehr Code schreiben. Zum Beispiel funktioniert das Scaffolding nicht mit Ihrer Konfiguration.

Warum erstellen Sie nicht einfach Ihre logischen Trennungen innerhalb der Artefaktordner? In Ihrem Modellordner haben Sie also einen Ordner für ViewModels und einen für DataModels. Erstellen Sie im DataModels-Ordner Ordner für die verschiedenen Teilmengen von Modellen (Kunden, Bestellungen usw.). Nur meine 2 Cent.

    
Zach Green 10.02.2012 12:24
quelle
2

Sie können den root-Feature-Ordner erstellen, einen Ordner für jedes Ihrer Features erstellen und einen freigegebenen Ordner darin. Dann können Sie alle Dateien (Controller, Modelle, Ansichten, Skripte), die sich auf ein einzelnes Feature beziehen, dem Ordner hinzufügen. Wenn mehrere Funktionen dieselbe Datei verwenden, können Sie sie in den freigegebenen Ordner verschieben. So könnte die Projektstruktur aussehen:

%Vor%

Um Razor mit dieser Ordnerstruktur zu verwenden, müssen Sie eine neue View-Engine-Klasse erstellen, die von RazorViewEngine übernommen wurde, die richtige ViewLocationFormats , MasterLocationFormats , PartialViewLocationFormats und die Instanz Ihrer View-Engine zu ViewEngines.Engines hinzufügen. Sammlung. Für die Beispielimplementierung und die Verwendungsprüfung FEATURE-ORDNER IM ASP.NET MVC-Artikel von Tim G. Thomas.

Wenn Sie Klassen wie Scripts in Ihren Ansichten verwenden möchten, müssen Sie auch deren Namespaces importieren. Eine Möglichkeit besteht darin, die Datei Web.config aus dem alten Ordner Ansichten in den Ordner Features zu kopieren. Weitere Optionen finden Sie unter Wie importiere ich einen Namespace in Razor View Page? Frage.

Weitere Informationen finden Sie in folgenden Artikeln:

Leonid Vasilyev 24.01.2017 10:30
quelle

Tags und Links