我使用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
当我在asp-action中定义它时,你会认为它会绑定到我的Create方法,但当我检查表单的渲染标记时,它看起来像这样:
<form method="get" action="/Test/Test">
<input type="submit" value="Generate test">
</form>
我的方法创建没有被处理,它只渲染测试/测试(区域/控制器)。
我还试图用[Route("Create")]
和[HttpGet("Create")]
装饰我的方法而没有结果。
我错过了一些明显的东西吗?