2009-11-17 31 views
10

¿Cómo puedo hacer en ASP.NET MVC 1, para tomar subcarpetas? Por ejemplo, tomar la siguiente estructura de carpetas en el controlador:Crear subcarpetas en el controlador

/Controller 
    /Blog 
    ViewsController.cs 
    ArticlesController.cs 
    /Customers 
    SalesController.cs 
    ProductsController.cs 
    HomeController.cs 

me gustaría tener la siguiente estructura de carpetas a la vista, cada vista se encontró el controlador:

/Views 
    /Blog 
    /Views 
     Index.aspx 
     Admin.aspx 
     Show.aspx 
    /Articles 
     Show.aspx 
     Admin.aspx 
    /Customers 
    /Sales 
     Index.aspx 
     Totals.aspx 
    /Products 
     Index.aspx 
     Promotions.aspx 
    /Home 
    Index.aspx 

Respuesta

4

Usted puede hacerlo utilizando las rutas, es decir

routes.MapAreaRoute("Blogs", 
     "Blog/Views/{controller}/{action}/{id}", 
     new { controller = "Views", action = "Index", id = "" }); 

que parecería satisfacer sus necesidades dan los datos anteriores.

+1

Tenga en cuenta que MapAreaRoute se ha eliminado de MVC 2.0, y se ha implementado de manera diferente ahora. Hay un artículo en sueco aquí que podría ejecutar a través de Google Translate. http://weblogs.asp.net/mikaelsoderstrom/archive/2009/10/02/areor-i-asp-net-mvc-2.aspx. –

8

Ésta es una característica que tiene sido agregado en ASP.NET MVC 2.0. Se llama Areas.

+0

en realidad muestra la respuesta allí cómo hacerlo en MVC1 también creo por cabeza. – bastijn

+0

Disculpe, debería haber aclarado primero que estoy trabajando con "MVC1. ¿Hay alguna solución para" MVC1 " –

1

Como mencionó Darin, las Áreas parecen ser la forma "prevista" para que los desarrolladores logren esto. Si puede esperar hasta febrero, puede considerar usar la vista previa de MVC 2. Sin embargo, los desarrolladores estaban haciendo cosas similares antes de la introducción de Areas with MVC 2. Si necesita una solución más inmediata, puede poner sus controladores en la estructura de carpetas que especificó anteriormente. Suponiendo que los controladores están espaciados según su carpeta (es decir, Project.Controllers.Blog), simplemente agrega un parámetro adicional al final que especifica el espacio de nombres para el controlador cuando inicializa sus rutas.

Por ejemplo:

routes.MapAreaRoute("Blog", 
    "Blog/{controller}/{action}/{id}", 
    new { controller = "Articles", action = "Index", id = "" }, 
    "Project.Controllers.Blog"); 
3

En MVC 2 o superior, sólo tiene que hacer clic derecho sobre el proyecto y, a continuación ratón sobre añadir, a continuación, haga clic en la zona, y entrar en el nombre de la zona. ¡Todo se crea automáticamente para ti!

Cuestiones relacionadas