En una aplicación ASP.NET MVC 3 con áreas (consulte el esquema a continuación). El directorio "Controladores" de la raíz ha sido eliminado.Mismo nombre de controlador en diferentes áreas
Cuando hago esto:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
consigo este error: No se encontraron tipos múltiples que coinciden con el controlador llamado 'Home'. Esto puede suceder si la ruta que brinda servicios a esta solicitud ('{controller}/{action}/{id}') no especifica espacios de nombres para buscar un controlador que coincida con la solicitud. Si este es el caso, registre esta ruta llamando a una sobrecarga del método 'MapRoute' que toma el parámetro 'espacios de nombres'. La solicitud de 'Home' ha encontrado que coinciden con los controladores siguientes: MyProject.Areas.Administration.Controllers.HomeController MyProject.Areas.BackEnd.Controllers.HomeController MyProject.Areas.FrontEnd.Controllers.HomeController
Cuando hago esto:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }, // Parameter defaults
new string[] { "MyProject.Areas.Administration.Controllers" }
);
consigo tis de error:
The view 'Index' or its master was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Home/Index.aspx
~/Views/Home/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx
~/Views/Home/Index.cshtml
~/Views/Home/Index.vbhtml
~/Views/Shared/Index.cshtml
~/Views/Shared/Index.vbhtml
---- Areas
|
|---- Administration
| |--- Controllers
| | |---- HomeController
| |--- Views
| |--- Index
|---- FrontEnd
| |--- Controllers
| | |---- HomeController
| |--- Views
| |--- Index
|---- BackEnd
|--- Controllers
| |---- HomeController
|--- Views
|--- Index
Update1 Para iniciar a un controlador específico en las áreas, he intentado esto:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
new[] { "MyProject.Areas.BackEnd.Controllers" }
);
}
Se ve bien. Uno más piensa. Cuando presiono F5 en VS, me gustaría ir al área de Backend en Home/Index –
@ Kris-I, en este caso, modifique el registro de ruta de su área o vaya a las propiedades de su proyecto y en la pestaña Web que podría establecer una página de inicio en la que podría definir 'Administración/Inicio/Índice'. De esta forma, cuando ejecute la aplicación, navegará automáticamente a este controlador. –
Cambiar la página de inicio está bien, pero por registro de ruta eche un vistazo a update1. Gracias –