Tworzę witrynę za pomocą ASP.NET Core MVC. Gdy klikam na działanie otrzymuję ten błąd:AmbiguousActionException: Wiele akcji pasujących do siebie. Następujące akcje pasowały do danych trasy i zostały spełnione wszystkie ograniczenia.
AmbiguousActionException: Multiple actions matched. The following actions matched route data and had all constraints satisfied:
Web.Controllers.ChangeEventsController.Create (Web)
Web.Controllers.ProductsController.CreateChangeEvent (Web)
Oto jak zdefiniowano moje działanie w index.cshtmlm dla mojego ProductsController:
<a asp-controller="ChangeEvents" asp-action="Create" asp-route-id="@item.Id">Create Change Event</a>
Oto mój routingu:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Oto jak zdefiniowano działania:
// ChangeEventsController
[HttpGet("{id}")]
public IActionResult Create(Guid id)
// ProductsController
[HttpGet("{id}")]
public IActionResult CreateChangeEvent(Guid id)
Co zrobiłem źle?
Aktualizacja
Dzięki @MegaTron za odpowiedź, ale chciałbym wiedzieć, dlaczego nie mogę mieć tę samą ścieżkę działań dla różnych kontrolerów. Czuję, że proponowane rozwiązanie nie będzie skalowane, jeśli mam wiele kontrolerów, z których każdy tworzy jednostki.
Nie trzeba IShouldNotNeedThisIThink deklarację trasy. – Klinger
Czy potrzebuję tej trasy? – Zeus82
W najprostszym przypadku potrzebujesz tylko domyślnego. – Klinger