Frage

Im Moment versuche ich, in das ASP.NET MVC-Framework zu erhalten.
Für die meisten meiner Testanwendungen verwendet ich eine einzige Montage / Projekt. Dies funktionierte gut für einige kleinere Anwendungen. Dann fragte ich mich, wie ich mein Modell, Controller und Ansichtsklassen in einzelne Baugruppen platzieren können? In wirklich großen Web-Anwendungen ist es nicht sehr realistisch, alles in einer einzigen Baugruppe / Projekt zu setzen.

Also meine Frage ist: Ist es möglich, dem ASP.NET MVC-Framework zu sagen, in einer anderen Baugruppe für Ansichten und / oder Controller ohne dabei das eingebaute Flexibilität des Routing-Engine suchen

War es hilfreich?

Lösung

(unbekannt) ist korrekt. Erstellen Sie zwei Projekte, eine Klassenbibliothek und ein MVC Web-Projekt. Das MVC-Projekt sollte die Klassenbibliothek verweisen, die die Controller und Code-Behind-Dateien (global asax etc.) enthält. Hier ist ein Beispiel-Layout.

Die Klassenbibliothek sollte nur CS-Dateien enthält und keine Ansichten (ASPX / ASCX-Dateien).

MyProject.BaseSite (class library)
    + Controllers
        - HomeController.cs
        - ... any other controllers
    - default.aspx.cs
    - global.asax.cs

MVC Web-Projekt sollte enthalten configs, Ansichten etc. und ein Verweis auf Ihre Klassenbibliothek

MyProject.ExampleSite
    + Content
        + scripts
        + css
        + images
    + Views
        + Home
            - index.aspx
            - .. other aspx files
        + Shared
            - Site.master
    - web.config

die verschiedenen Namensräume bleiben. Sie können dann mehrere Beispiel-Websites erstellen, die denselben Code verweisen. Auf diese Weise können Sie effektiv völlig anders Ihre Website, um die Haut.

Andere Tipps

Erstellen Sie ein separates Klassenbibliotheksprojekt für jede Ebene der Verantwortung, übersetzen Sie die Assembly erstellen und dann verweist jeweils in der Anwendung gegebenenfalls.

Ja, wenn Sie verwenden eines der unterstützten dependency injection Container, dann ihre Konfigurationsdaten typischerweise nicht nur die Klasse festlegen, in Antwort auf eine bestimmte Anfrage geladen werden, sondern auch die Anordnung aus dem es geladen werden. Auf diese Weise können Sie Ihre Klassen bis über beliebige Baugruppen spalten und MVC noch in der Lage sein, sie zu finden.

Obwohl, natürlich, die einfachere Antwort zur Verfügung gestellt von Unknown (Google) wird auch funktionieren!

Ich weiß, dass dies eine wirklich alte Frage, aber ich habe einen Artikel auf, wie man genau geschrieben, was Sie fordern für

http: / /dotnetslackers.com/articles/aspnet/storing-asp-net-mvc-controllers-views-in-separate-assemblies.aspx

Nur @ David Antwort Abschluss:

Wenn Ihr Projekt von NuGet verwaltet wird, nachdem die Klassenbibliotheken Erstellen Sie eine Kopie Ihrer packages.config Datei in das Stammklassenbibliotheken ausführen. Danach sollten Sie jede packages.config Datei Hinzufügen oder Entfernen von Paketen bearbeiten, nach den Bedürfnissen der einzelnen Klassenbibliothek.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top