22

ASP.NET Core MVC を使用して Web サイトを作成しています。アクションをクリックすると、次のエラーが表示されます。

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 に返信していただきありがとうございます。ただし、異なるコントローラーに対して同じアクション パスを使用できない理由を知りたいです。それぞれがエンティティを作成するコントローラーが多数ある場合、提案されたソリューションはうまくスケーリングされないように感じます。

4

5 に答える 5

31

試す:

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

// ProductsController
[HttpGet("CreateChangeEvent/{id}")]
public IActionResult CreateChangeEvent(Guid id)
于 2016-11-24T23:29:29.130 に答える