Meine Lösungsstruktur ist die folgende:MVC Routing mit verschiedenen Bereichen mit mehreren Controllern
Areas
- Games
-Controllers
-Views etc
- Movies
-Controllers
- MoviesController.cs
- MovieCalendarController.cs
- MovieSearchController.cs
-Views etc
was Nun würde Ich mag in der Lage sein, dies zu tun: Navigieren Sie zu https://localhost/Movies/ und schlug den Index des MoviesController.cs
Wechseln Sie zu: https://localhost/Movies/Calendar/ und drücken Sie den Index des MovieCalendarController.cs
und navigieren schließlich zu https://localhost/Movies/Search/ und schlug den Index des MovieSearchController.cs
Was habe ich versucht, aber funktioniert nicht Fehler (No route in the route table matches the supplied values.
bekommen):
MovieAreaRegistration.cs
public override void RegisterArea(AreaRegistrationContext context)
{
context.MapRoute(
"Movies_default",
"Movies/{action}/{id}",
new { controller = "Movies", action = "Index", id = UrlParameter.Optional }
);
context.MapRoute(
"Calendar_default",
"Movies/Calendar/",
new { controller = "MovieCalendar", action = "Index", id = UrlParameter.Optional }
);
context.MapRoute(
"Search_default",
"Movies/Search/{action}/{id}",
new { controller = "MovieSearch", action = "Index", id = UrlParameter.Optional }
);
}
Apologies, I auf Bereiche neu bin und Routing
Update
Nach usin g Attribut-Routing Ich habe in dieses Problem fiel:
Mehrere Controller-Typen wurden gefunden, die die URL entsprechen. Dies kann passieren, wenn Attributrouten auf mehreren Controllern mit der angeforderten URL übereinstimmen.
Die Anforderung folgende passende Controller-Typen gefunden hat: MovieCalendar.UI.Areas.Movies.Controllers.MovieCalendarController MovieCalendar.UI.Areas.Movies.Controllers.MoviesController
Filme-Controller
[RouteArea("Movies")]
[Route("{action}")]
public class MoviesController : BaseController
{
}
Kalender-Controller
[RouteArea("Movies")]
[RoutePrefix("Calendar")]
[Route("{action=Index}")]
public class MovieCalendarController : BaseController
{
}
Dies geschieht beim Zugriff auf die URL http://localhost/Movies/Calendar in der Hoffnung, dass es mich auf die MovieCalendarController
Indexaktionsmethode führt. Ich kann sehen, warum es sich beschweren, weil es eine ActionMethod in der MovieController
genannten Calendar
(There is not) geben könnte.
Haben Sie so etwas in Ihrem global.asax Application_Start ausgeführt? Areas.MVC.MVCAreaRegistration.RegisterAllAreas() wobei Areas.MVC.MVCAreaRegistration der Namespace für Ihre RegisterAreas-Methode ist? – Tyddlywink
Die MovieAreaRegistration war ein Gerüstcode, der von Visual Studio erstellt wurde. Im Bereich Filme. –