0

Mvc 6 で Areas を使用しており、特定の各エリアにルーティングしようとしています。たとえば、私はこれを持っています:

私のコントローラーの外観は、次のように Area および route 属性で装飾されています。

[Authorize]
[Area("Test")]
[Route("[area]/[controller]")]
public class TestController : Controller

次に、以下のように定義された 2 つの HTTPGET メソッドがあります。

    public IActionResult Index()
    {
        var model = new TestViewModel();
        return View(model);
    }

    public IActionResult Create()
    {
        var model = new TestViewModel();
        return View(model);
    }

最後に、私のフォームは次のようになります。

    <form asp-route-area="Test" asp-controller="Test" asp-action="Create" asp-antiforgery="false" method="get">
        <input type="submit" value="Generate test"/>
    </form>

フォームを投稿しようとすると、次のようにスローされます。

AmbiguousActionException: 複数のアクションが一致しました。次のアクションは、ルート データと一致し、すべての制約が満たされていました。

Areas.Test.Controllers.TestController.Index

Areas.Test.Controllers.TestController.Create

asp-action で定義すると Create メソッドにバインドされると思われるかもしれませんが、フォームのレンダリングされたマークアップを確認すると、次のようになります。

<form method="get" action="/Test/Test">
        <input type="submit" value="Generate test">
 </form>

私のメソッド Create は処理されません。テスト/テスト (エリア/コントローラー) のみをレンダリングします。

[Route("Create")]また、結果の有無にかかわらずメソッドを装飾しようとしました[HttpGet("Create")]

ここで明らかなことを見逃していますか?

4

1 に答える 1

1

を使用している場合RC1、タグ ヘルパーで領域を使用することはできません。

タグヘルパーの領域はRC2 問題へのリンクでサポートされています

于 2016-04-29T13:43:21.013 に答える