visual vistas studio siguientes secciones página presentado plantillas pero para pagina net mvc multiples misma las han formularios diseño definido asp asp.net-mvc asp.net-mvc-2 asp.net-mvc-3 naming-conventions conventions

asp.net mvc - vistas - Una estructura de carpeta ideal para.NET MVC



plantillas mvc visual studio 2015 (3)

Cuando comencé en .NET Webforms, no tuve muchos problemas para encontrar una estructura de carpetas que seguir, ya que VS le ofreció carpetas de aplicaciones como "App_Code" y la mayoría de los ejemplos de aplicaciones ponen "BLL", "DAL" dentro, etc.

Pero ahora en MVC, cada ejemplo que verifico usa una estructura diferente, como esta vez sin estándares y no he encontrado una buena solución en Google o SO.

Entonces, tal vez podamos compartir cómo organizamos nuestros proyectos MVC, y podemos ayudar a otros a tomar sus propias decisiones. Aquí está la estructura para proyectos pequeños a medianos que uso:

App_Data Areas Admin Controllers Models Views MyAccount Controllers Models Views Content Images Scripts Styles Controllers HomeController.cs Helpers ExtensionMethods // I.e. based on HtmlHelper, use "helper" suffix MenuHelper.cs // to be called as html.Menu() Utilities.cs // Other generic (static) libraries, no suffix used Models ViewModels // for passing models to Views RegisterViewModel.cs // use "ViewModel" suffix Customer.cs // to extend models like adding Model Validation Repositories CustomerRepository.cs // use "Repository" suffix Services CustomerService.cs // use "Service" suffix, to move code away from controllers Views Home Index.cshtml Register.cshtml Shared // Site Layouts (Master templates), also put partials here SiteLayout.cshtml

¿Qué tal el tuyo?


Descubrí que simplifica la implementación para que el proyecto del sitio web contenga solo contenido (sin código compilado).

Algo como:

Proyecto web.Site

Content Images Css Scripts Views web.config

Y mueva todo el código compilado a otro proyecto:

Proyecto web

Controllers Filters Models ...

Luego, puede tratar todo lo que se encuentre dentro del proyecto Web.Site como si fuera necesario desplegarlo, y todos los ensamblajes requeridos estarán en Web.Sitio / bin.

Ya sea que esté realizando una implementación sencilla de xcopy o use WiX para crear un paquete MSI, esto hará la vida un poco más fácil.


Mientras esté claro dónde están las cosas, no importa mucho. Creo que es solo una cuestión de ser coherente dentro de su organización / grupo.


Yo segundo el enfoque de dos proyectos. Jimmy Bogard también tiene un buen post sobre el enfoque (asegúrate de revisar todos los comentarios).

Personalmente, encuentro que cuando estoy trabajando en una parte de una aplicación, uso servicios relacionados, controladores, repositorios, etc., y cuando pones cada uno de estos archivos en una carpeta diferente, puede resultar tedioso ir y venir y encontrarlos. . Después de algunos juegos he estado siguiendo este formato:

AppName.Web.UI

Scripts Content View

AppName.UI.Core

Attributes Filters Formatters Helpers Models Company Interfaces IController.cs IRepository.cs IService.cs ViewModels ViewModel1.cs ViewModel2.cs Controller.cs Repository.cs Service.cs User .... Plugins (mailchimp, Twitter OAuth, etc..) Global.asax (define all the code here rather than in the UI project)

Proyecto de prueba

...

Creo que depende de cuán grande sea su proyecto en cuanto a si se desglosa aún más y usa las subcarpetas Interface y ViewModel. No es perfecto, pero he encontrado que combina mejor con la forma en que pienso.

El caso también se puede hacer para colocar sus servicios y repositorios en un tercer proyecto (AppName.Core), dejando que el proyecto AppName.Web.Core encapsule solo las partes relacionadas con la Web (Atributos, Controladores. ViewModels, etc.). De nuevo eso realmente se relaciona con la complejidad del proyecto.