Ho due aree nel mio progetto. Ora, quando faccio funzionare il programma ottengo questo errore:Sono stati trovati più tipi che corrispondono al controller denominato "Home" - In due aree diverse
Multiple types were found that match the controller named 'Home'. This can happen if the route that services this request ('{controller}/{action}/{id}') does not specify namespaces to search for a controller that matches the request. If this is the case, register this route by calling an overload of the 'MapRoute' method that takes a 'namespaces' parameter.
The request for 'Home' has found the following matching controllers:
BaseAdminMVC.Areas.BaseAdmin.Controllers.HomeController
BaseAdminMVC.Areas.TitomsAdmin.Controllers.HomeController
ho trovato qui qualche fonte: Multiple Controller name
Ma penso che funziona solo per una zona.
Nel mio caso ho due progetti in aree diverse. Spero che qualcuno possa dire cosa dovrei fare per risolvere il problema.
Ecco il file Global.asax
:
public static void RegisterRoutes(RouteCollection routes)
{
string[] namespaces = new string[] { "BaseAdminMVC.Areas.BaseAdmin.Controllers", "BaseAdminMVC.Areas.TitomsAdmin.Controllers"};
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional },
namespaces
);
}
A proposito, ho anche controllore ("HomeController
") al di fuori della cartella Area
. Questo fornisce solo collegamenti a due progetti BaseAdmin
e TitomsAdmin
.
ho provato questa soluzione, ma ancora non funziona:
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
"BaseAdmin",
"BaseAdmin/{controller}/{action}",
new { controller = "Account", action = "Index" },
new string[] { "BaseAdminMVC.Areas.BaseAdmin.Controllers" }
);
routes.MapRoute(
"TitomsAdmin",
"TitomsAdmin/{controller}/{action}",
new { controller = "Home", action = "Index" },
new string[] { "BaseAdminMVC.Areas.TitomsAdmin.Controllers" }
);
Grazie in anticipo !!
Modifica: è necessario spostare il percorso predefinito verso il basso (fino all'ultima posizione). L'ordine è importante qui. –
@HenkHolterman Ancora non ha funzionato. – fiberOptics
E non è ancora chiaro cosa significa "non funziona". –