Come separare il modello, vista e controllore in un'applicazione ASP.NET MVC in diverse assemblee

StackOverflow https://stackoverflow.com/questions/910089

Domanda

Al momento sto cercando di entrare nel framework ASP.NET MVC.
Per la maggior parte delle mie applicazioni di test ho usato un unico gruppo / progetto. Questo ha funzionato bene per alcune applicazioni più piccoli. Poi mi sono chiesto come avrei potuto mettere il mio modello, classi controller e visualizzare in assemblee separate? Nel veramente grandi applicazioni web non è molto realistico per mettere tutto in un unico assembly / progetto.

Quindi la mia domanda è:? E 'possibile dire al framework ASP.NET MVC per la ricerca in un altro assembly per le viste e / o controllori senza perdere la flessibilità intrinseca del motore di routing

È stato utile?

Soluzione

(sconosciuto) è corretta. Creare due progetti, una libreria di classi e di un progetto web MVC. Il progetto MVC dovrebbe fare riferimento la libreria di classi che contiene i controller e il codice dietro file (ASax globale, ecc). Ecco un esempio di layout.

La libreria di classi dovrebbe contenere solo i file Cs e senza vista (aspx / ascx file).

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

progetto web MVC dovrebbe contenere configurazioni, viste, ecc e un riferimento alla tua libreria di classi

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

Ricordate i diversi spazi dei nomi. È quindi possibile creare più siti web Esempi che fanno riferimento allo stesso codice. Questo ti permette di pelle in modo efficace il vostro sito web in modo completamente diverso.

Altri suggerimenti

Creare un progetto di libreria di classi separato per ogni strato di responsabilità, compilare per creare l'assembly e quindi fare riferimento ogni nell'applicazione, se del caso.

Sì, se si utilizza uno dei supportato iniezione di dipendenza contenitori, poi i dati di configurazione specificano non solo la classe da caricare in risposta a una query particolare, ma anche il gruppo da cui deve essere caricata. Questo consente di dividere le vostre classi in su attraverso assemblee arbitrarie e MVC sarà ancora in grado di trovarli.

Anche se, naturalmente, la risposta più semplice fornito da Unknown (Google) funzionerà anche!

Mi rendo conto che questa è una domanda veramente vecchio, ma ho scritto un articolo su come esattamente quello che stai chiedendo

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

Solo completando @ risposta di David:

Se il progetto è gestito da NuGet, dopo aver creato le librerie di classi, eseguire una copia del file packages.config alla radice librerie di classi. In seguito, è necessario modificare ogni file packages.config aggiunta o la rimozione dei pacchetti, in base alle esigenze di ciascuna libreria di classi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top