Mvc 6 taghelper asp-action路线不起作用

时间:2016-04-28 10:01:53

标签: asp.net-core asp.net-mvc-routing asp.net-core-mvc tag-helpers

我使用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")]装饰我的方法而没有结果。

我错过了一些明显的东西吗?

1 个答案:

答案 0 :(得分:1)

如果您使用RC1,则无法在标记帮助程序中使用区域。

RC2 link to issue

支持代码帮助程序中的区域