AmbiguousActionException: plusieurs actions correspondantes. Les actions suivantes correspondaient aux données de route et toutes les contraintes étaient satisfaites
Je suis entrain de créer un site web en utilisant ASP.NET Core, MVC. Quand je clique sur une action, j'obtiens cette erreur:
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)
C'est la façon dont je définis mon action dans l'index.cshtmlm pour mon contrôleur produits:
<a asp-controller="ChangeEvents" asp-action="Create" asp-route-id="@item.Id">Create Change Event</a>
Voici mon routage:
app.UseMvc(routes =>
{
routes.MapRoute(
name: "default",
template: "{controller=Home}/{action=Index}/{id?}");
});
Voici comment je définis les actions:
//ChangeEventsController
[HttpGet("{id}")]
public IActionResult Create(Guid id)
//ProductsController
[HttpGet("{id}")]
public IActionResult CreateChangeEvent(Guid id)
Qu'ai-je fait de mal?
Mise à jour
Merci @MegaTron pour votre réponse, mais je voudrais savoir pourquoi je ne peut pas avoir la même action de chemin d'accès pour les différents contrôleurs. Je pense que la solution que vous avez proposée ne sera pas bien si j'ai beaucoup de contrôleurs que chacun de créer des entités.
source d'informationauteur Zeus82
Vous devez vous connecter pour publier un commentaire.
Essayer:
Ajouter le
[Route("api/[controller]")]
attribut au-dessus de chacun de vos contrôleurs de l'action itinéraires en vertu des chemins différents, alors vous pouvez utiliser le même[HttpGet("{id}")]
dans chaque contrôleur. Cela devrait échelle assez bien. Voir cette exemple dans microsoft docs.Si vous n'utilisez pas le
[Route]
annotation pour spécifier un itinéraire pour chaque contrôleur, votre ASP.NET Core, MVC ne peut pas savoir hors de la zone d'action à choisi de traiter la demande.