2016-11-24 9 views
6

Ich erstelle eine Website mit ASP.NET Core MVC. Wenn ich auf eine Aktion klicken ich diesen Fehler:AmbiguousActionException: Mehrere Aktionen übereinstimmten. Die folgenden Aktionen stimmten mit den Routendaten überein und erfüllten alle Einschränkungen

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) 

Dies ist, wie ich für meine Products im index.cshtmlm meine Aktion definiert:

<a asp-controller="ChangeEvents" asp-action="Create" asp-route-id="@item.Id">Create Change Event</a> 

Hier ist mein Routing:

 app.UseMvc(routes => 
     { 
      routes.MapRoute(
       name: "default", 
       template: "{controller=Home}/{action=Index}/{id?}"); 
     }); 

Hier ist, wie ich die Aktionen definiert:

// ChangeEventsController 
[HttpGet("{id}")] 
public IActionResult Create(Guid id) 

// ProductsController 
[HttpGet("{id}")] 
public IActionResult CreateChangeEvent(Guid id) 

Was habe ich falsch gemacht?

aktualisieren

Dank @MegaTron für Ihre Antwort, aber ich würde gerne wissen, warum ich nicht die gleiche Aktion Pfad für verschiedene Controller haben. Ich habe das Gefühl, dass die von Ihnen vorgeschlagene Lösung nicht gut skaliert werden kann, wenn ich viele Controller habe, die jeweils Entitäten erstellen.

+2

Sie brauchen nicht IShouldNotNeedThisIThink Route Erklärung. – Klinger

+0

Brauche ich diese Route? – Zeus82

+0

Im einfachsten Fall brauchen Sie nur den Standard. – Klinger

Antwort

10

Versuchen:

// ChangeEventsController 
[HttpGet("Create/{id}")] 
public IActionResult Create(Guid id) 

// ProductsController 
[HttpGet("CreateChangeEvent/{id}")] 
public IActionResult CreateChangeEvent(Guid id) 
+5

Warum kann ein anderer Controller nicht denselben Aktionsnamen haben? – Zeus82

Verwandte Themen