¿Cómo separar modelo, vista y el controlador en una aplicación ASP.NET MVC en diferentes conjuntos

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

Pregunta

En este momento estoy tratando de entrar en el marco ASP.NET MVC.
Para la mayoría de mis aplicaciones de prueba he usado un montaje sencillo / proyecto. Esto funcionó bien para algunas aplicaciones más pequeñas. Entonces me pregunté cómo pude colocar mi modelo, controlador y ver clases en conjuntos separados? En aplicaciones web realmente grandes no es muy realista para poner todo en un conjunto individual / proyecto.

Así que mi pregunta es: ¿Es posible saber el marco ASP.NET MVC para buscar en otro montaje para vistas y / o controladores sin perder la flexibilidad incorporada del motor de enrutamiento

¿Fue útil?

Solución

(desconocido) es correcta. Crear dos proyectos, una biblioteca de clases y un proyecto web MVC. El proyecto MVC debe hacer referencia a la biblioteca de clases que contiene los controladores y los archivos de código subyacente (asax etc. global). He aquí un ejemplo de diseño.

La biblioteca de clases sólo debe contener archivos .cs y sin vistas (archivos .ascx .aspx /).

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

MVC proyecto web debe contener configuraciones, etc vistas y una referencia a la biblioteca de clases

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

Recuerde que los diferentes espacios de nombres. A continuación, puede crear varios sitios web de ejemplo que hacen referencia al mismo código. Esto le permite a piel con eficacia su sitio web completamente diferente.

Otros consejos

Crear un proyecto de biblioteca de clases separadas para cada capa de la responsabilidad, compilar para crear el montaje y después hacer referencia a cada uno en su aplicación en su caso.

Sí, si se utiliza uno de los apoyada inyección de dependencia contenedores, entonces sus datos de configuración especifican típicamente no sólo la clase que se cargue en respuesta a una consulta en particular, sino también el conjunto de la que se va a cargar. Esto le permite dividir sus clases a través de asambleas arbitrarias y MVC todavía será capaz de encontrarlos.

A pesar de que, por supuesto, la respuesta más simple proporcionada por Desconocido (Google) también trabajará!

Me doy cuenta de que esta es una pregunta muy viejo, pero he escrito un artículo sobre cómo exactamente lo que está pidiendo

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

Sólo completando la respuesta de David @:

Si su proyecto es administrado por NuGet, después de crear las bibliotecas de clases, realice una copia de su archivo a la raíz packages.config bibliotecas de clases. Después, habrá que editar cada archivo packages.config la adición o eliminación de paquetes, de acuerdo con las necesidades de cada biblioteca de clases.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top