Principales respuestas
MVC 4 - Subcarpetas

Pregunta
-
Hola estoy realizando una aplicacion web con MVC 4 y tengo una duda con el tema de sub carpetas...
Tengo dentro del View/Admin/Users/ y ahi dentro todos los archivos relacionados con los usuarios. Lo hago asi porque aparte dentro del View van otras subcarpetas con mas Subcarpetas..
Como puedo luego en el menu principal enlazar cada archivo que ahi dentro de cada subcarpetas..
Ejemplo mi menu tiene Home , Administration , etc... Dentro de Administration esta Users y luego tendria que aparecer los link para cada archivo Como crear, modificar, editar, eliminar, etc... El menu no me preocupa porque ya lo tengo armado, lo que si no me anda es que no va a esas vistas...
No se si se entiende bien.
Espero alguna respuesta... Muchas gracias desde ya...
- Cambiado Leandro TuttiniMVP miércoles, 3 de octubre de 2012 19:47 (De:Lenguaje C#)
Respuestas
-
Pues esa ruta suena mal. Normalmente uno hace clic derecho sobre el proyecto MVC4 y selecciona Add -> Area... Por ejemplo, en mi aplicación MVC4 yo hice eso y agregué un área llamada Admin. Esto me agregó las carpetas Areas y Areas\Admin. Dentro de Admin tengo las carpetas Controllers, Models y Views, y automáticamente obtuve un controller. Luego la ruta es Admin/{controller}/{action}/{id}. Así entonces usted debería poder usar Html.ActionLink() para generar enlaces para las acciones en los controladores de esta nueva área.
Jose R. MCP
Code Samples- Marcado como respuesta joacosg jueves, 4 de octubre de 2012 14:01
-
Al margen de lo que te ha dicho @webjose...
A nivel de distribución física de las vistas, asp.net mvc tan solo soporta Views/Controlador. Dentro de /Controlador deben ir todas las vistas de este controlador, no se pueden poner subcarpetas. El uso de áreas permite establecer una carpeta base de área, donde entonces a nivel de directorios tienes:
/Views/Controlador/*.cshtml -> Vistas de la área "principal" (sin área). Correspondientes a urls tipo /Controlador/Accion
/Area/Views/Controlador/*.cshtml -> Vistas de la área "Area". Correspondientes a urls tipo /Area/Controlador/Accion
Ahora:
- Si deseas más paths en la URL (p.ej. /acciones/Usuarios/Admin/Nuevo) eso se resuelve mediante la tabla de rutas.
- Si deseas organizar tus vistas a nivel de directorios y subdirectorios eso requiere más trabajo. Para ello lo más sencillo es definirte un motor de vistas que herede del motor de vistas Razor (RazorViewEngine) y establecer la propiedad ViewLocationFormats y/o redefinir el método FindView o CreateView. Un ejemplo lo tienes en el fantástico post de @jmaguilar: http://www.variablenotfound.com/2009/06/cambiar-la-ubicacion-de-las-vistas-en.html Y otro ejemplo más completo lo tienes en el blog de Lucas Ontivero: http://geeks.ms/blogs/lontivero/archive/2011/12/17/retoques-a-mvc-y-razor-para-proyectos-grandes-una-recomendaci-243-n.aspx
Un saludo!
Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
- Marcado como respuesta joacosg martes, 9 de octubre de 2012 19:00
Todas las respuestas
-
Pues esa ruta suena mal. Normalmente uno hace clic derecho sobre el proyecto MVC4 y selecciona Add -> Area... Por ejemplo, en mi aplicación MVC4 yo hice eso y agregué un área llamada Admin. Esto me agregó las carpetas Areas y Areas\Admin. Dentro de Admin tengo las carpetas Controllers, Models y Views, y automáticamente obtuve un controller. Luego la ruta es Admin/{controller}/{action}/{id}. Así entonces usted debería poder usar Html.ActionLink() para generar enlaces para las acciones en los controladores de esta nueva área.
Jose R. MCP
Code Samples- Marcado como respuesta joacosg jueves, 4 de octubre de 2012 14:01
-
-
Al margen de lo que te ha dicho @webjose...
A nivel de distribución física de las vistas, asp.net mvc tan solo soporta Views/Controlador. Dentro de /Controlador deben ir todas las vistas de este controlador, no se pueden poner subcarpetas. El uso de áreas permite establecer una carpeta base de área, donde entonces a nivel de directorios tienes:
/Views/Controlador/*.cshtml -> Vistas de la área "principal" (sin área). Correspondientes a urls tipo /Controlador/Accion
/Area/Views/Controlador/*.cshtml -> Vistas de la área "Area". Correspondientes a urls tipo /Area/Controlador/Accion
Ahora:
- Si deseas más paths en la URL (p.ej. /acciones/Usuarios/Admin/Nuevo) eso se resuelve mediante la tabla de rutas.
- Si deseas organizar tus vistas a nivel de directorios y subdirectorios eso requiere más trabajo. Para ello lo más sencillo es definirte un motor de vistas que herede del motor de vistas Razor (RazorViewEngine) y establecer la propiedad ViewLocationFormats y/o redefinir el método FindView o CreateView. Un ejemplo lo tienes en el fantástico post de @jmaguilar: http://www.variablenotfound.com/2009/06/cambiar-la-ubicacion-de-las-vistas-en.html Y otro ejemplo más completo lo tienes en el blog de Lucas Ontivero: http://geeks.ms/blogs/lontivero/archive/2011/12/17/retoques-a-mvc-y-razor-para-proyectos-grandes-una-recomendaci-243-n.aspx
Un saludo!
Eduard Tomàs Blog: http://geeks.ms/blogs/etomas -- Twitter: eiximenis
- Marcado como respuesta joacosg martes, 9 de octubre de 2012 19:00