Я использую области в Mvc 6 и пытаюсь перейти к каждой конкретной области. Например у меня это:
Мой контроллер выглядит украшенным атрибутом Area и route, например:
[Authorize]
[Area("Test")]
[Route("[area]/[controller]")]
public class TestController : Controller
Затем у меня есть два метода 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
Вы могли подумать, что он будет привязан к моему методу Create, когда я определю его в asp-действии, но когда я проверяю визуализированную разметку формы, это выглядит так:
<form method="get" action="/Test/Test">
<input type="submit" value="Generate test">
</form>
Мой метод Create не обрабатывается, он отображает только Test / Test (область / контроллер).
Я также пытался украсить свой метод [Route("Create")]
и [HttpGet("Create")]
, но безрезультатно.
Я упускаю здесь что-то очевидное?