net mvc5 mvc microsoft framework asp asp.net-mvc-3 entity-framework-4

mvc5 - ASP.NET MVC 3 y la carpeta App_Code



mvc 5 download (6)

App_Code es necesario en los proyectos del sitio web porque tiene un significado especial. Significa "No enviar estos archivos a un navegador web". En ASP.NET MVC, los archivos no se entregan directamente al navegador en la mayoría de los casos, por lo que App_Code no es necesario. Puede colocar los archivos de código donde lo desee, en cualquier carpeta que desee, ya que estos archivos se compilan en una DLL y, por lo general, no se publican en el sitio web en sí.

El uso de una biblioteca independiente también es una buena solución.

En el formulario App_Code ASP.NET, App_Code es una carpeta estándar para poner código y usarlo en tiempo de ejecución. Pero creo que esta carpeta es algo diferente en ASP.NET MVC, mi pregunta es:

  • ¿Dónde debo colocar mi código (métodos de extensión, ayudantes, ...) en ASP.NET MVC? Cuando App_Code código en la carpeta App_Code , no puedo usar el tema en el controller pero funcionan bien en las views .

  • Acerca de Entity Framework, la misma pregunta, ¿dónde debería colocar los archivos edmx y tt ? No estoy usando Code-First

Actualizar:

Después de algunas búsquedas, finalmente creé un nuevo proyecto de Class Library en mi solución, el código está disponible en todos los controllers y views . Todavía no sé por qué el código de App_Code no está disponible en el controlador


Bueno, intenta descargar algunos proyectos ya existentes de código abierto. Uno de ellos es bastante complejo, pero muy bueno si lo entiendes - orchard

La mejor práctica es mover esta lógica a DAL (capa de acceso a datos) o BLL (capas de lógica de negocios). Depende de la complejidad de su aplicación.


Nadie explica realmente por qué existe App_Code en primer lugar. Es el lugar donde se colocan los archivos de código para obtener una compilación dinámica (en tiempo de ejecución). Esa es la razón número uno para App_Code y por qué es especial. Puede poner el código en cualquier carpeta que desee, pero tendrá que marcarlo con la acción Compilar para compilar mientras que en App_Code no sea necesario; de hecho, la mayoría de los archivos en App_Code no son parte de un proyecto.

Funciona también en proyectos MVC de ASP.NET, solo tiene que nombrar sus archivos de código con la extensión .cshtml.


Para aquellos que no quieren una segunda biblioteca de proyecto / clase y solo quieren una carpeta simple para algunas clases de c #, propongo "App_Classes".


Recomiendo comenzar con este tutorial . Primero usa el código de EF, pero simplemente puede reemplazar el código DbContext primero con un edmx ObjectContext normal si lo desea (sugerencia: carpeta de modelos).

App_Code es específico de los proyectos del sitio web . OMI, es una forma terrible de organizar todos los sitios web, excepto el más simple. Un proyecto MVC es un proyecto de aplicación web , por lo que no hay un App_Code y sus clases se pueden definir prácticamente en cualquier lugar.


Tuve el mismo problema, mi clase Utility.cs no fue reconocida dentro de mi proyecto MVC. Cambié el "Contenido" de la acción de compilación a "Compilar" y eso resolvió mi problema. Espero que ayude.