Controlador de ruta que se encuentra en una subcarpeta

Tengo un proyecto MVC3 con una carpeta “sub” dentro de mi carpeta de Controllers . Ahora quiero crear una Ruta a un controlador que esté dentro de esa subcarpeta. Pero, ¿cómo puedo hacer eso?

Esto no parece funcionar para mí:

 context.MapRoute("Test", "SubFolder/Test", new { Controller = "SubFolder/Test", Action = "Index" }); 

Así que el nombre de la subcarpeta es SubFolder y allí tengo un controlador llamado TestController.cs . ¿Cómo puedo crear un MapRoute para eso?

No hay tal noción como subcarpeta para controladores. Los controladores son solo clases de C # que puedes almacenar donde quieras. En la configuración de su ruta, solo debe mencionar el nombre del controlador:

 context.MapRoute( "Test", "SubFolder/Test", new { controller = "Test", action = "Index" } ); 

y si desea tener 2 controladores con el mismo nombre, debe especificar la restricción de espacio de nombres al definir la ruta:

 context.MapRoute( "Test", "SubFolder/Test", new { controller = "Test", action = "Index" }, new[] { "MvcApplication.Controllers.SubFolder" } ); 

Así que ahora, cuando navega a http://example.com/subfolder/test , se ejecutará la acción Index del TestController.

Si usa MvcCodeRouting , puede anidar los controladores en subcarpetas con la profundidad que desee y el enrutamiento se basará en los espacios de nombres, por lo que seguirá la convención de las carpetas de forma predeterminada.

 using System.Web.Routing; using MvcCodeRouting; void RegisterRoutes(RouteCollection routes) { routes.MapCodeRoutes(typeof(Controllers.HomeController)); } 

Comenzando con MvcCodeRouting