2016-11-24 8 views
6

私はASP.NET Core MVCを使用してWebサイトを作成しています。私はアクションをクリックすると、私はこのエラーを取得:AmbiguousActionException:複数のアクションが一致しました。次のアクションがルートデータと一致し、すべての制約が満たされました

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) 

は、これは私が私のProductsControllerのためindex.cshtmlmで自分の行動をどのように定義したかである:ここでは

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

は私のルーティングです:

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

は私がアクションを定義した方法です:

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

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

どうしたのですか?

を更新あなたの応答のための

おかげ@MegaTron、しかし私は、私は別のコントローラに同じアクションパスを持つことができない理由を知っていただきたいと思います。エンティティを作成するコントローラがたくさんある場合は、提案したソリューションがうまく拡張できないような気がします。

+2

あなたはIShouldNotNeedThisIThinkルート宣言は必要ありません。 – Klinger

+0

私はそのルートが必要ですか? – Zeus82

+0

最も単純なケースでは、デフォルトのものが必要です。 – Klinger

答えて

10

試してみてください。

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

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

異なるコントローラーで同じアクション名を使用できないのはなぜですか? – Zeus82

関連する問題