W aplikacji ASP.NET MVC 3 z obszarami (patrz schemat poniżej). Katalog "Kontrolery" z katalogu głównego został usunięty.Ten sam numer kontrolny w różnych obszarach
Kiedy to zrobić:
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
otrzymuję ten błąd: Wiele typów stwierdzono, że pasuje do kontrolera o nazwie 'Home'. Może się to zdarzyć, jeśli trasa obsługująca to żądanie ("{kontroler}/{akcja}/{id}") nie określa przestrzeni nazw do wyszukiwania kontrolera pasującego do żądania. W takim przypadku zarejestruj tę trasę, wywołując przeciążenie metody "MapRoute" , która pobiera parametr "namespace". Żądanie 'Home' znalazła następujące kontrolery dopasowania: MyProject.Areas.Administration.Controllers.HomeController MyProject.Areas.BackEnd.Controllers.HomeController MyProject.Areas.FrontEnd.Controllers.HomeController
Kiedy I to zrobić:
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" }
);
uzyskać tis błąd:
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 Aby rozpocząć do konkretnego kontrolera w obszarach, próbowałem to:
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" }
);
}
Wygląda dobrze. Jeszcze jedno. Kiedy uderzę w F5 w VS, domyślnie chcę przejść do obszaru Backend w Home/Index –
@ Kris-I, w tym przypadku albo zmodyfikuj rejestrację trasy w okolicy, albo przejdź do właściwości twojego projektu i na karcie może ustawić stronę startową, w której można zdefiniować "Administracja/Dom/Indeks". W ten sposób po uruchomieniu aplikacja automatycznie przejdzie do tego kontrolera. –
Zmień stronę startową ok, ale po rejestracji trasy spójrz na update1. Dzięki –