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 carpetaApp_Code
, no puedo usar el tema en elcontroller
pero funcionan bien en lasviews
.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.