在ASP.NET MVC Core中进行路由,标记助手路由到错误的POST操作

时间:2018-10-26 10:22:26

标签: asp.net-core-mvc

在下面的示例中,当我在http://test.com/pure-mvc-ui-demo(注意没有ID)并发布表单时,MVC正确地路由到Example控制器操作(http://test.com/pure-mvc-ui-demo)的POST重载。

当我在http://test.com/pure-mvc-ui-demo/1时,该表格似乎错误地发布到了http://test.com/pure-mvc-ui-demo/1,这对于发布超载而言不是有效的URL。

我可以使用命名路由来规避此问题,但是我认为MVC应该知道POST上下文中没有这样的路由。

在仍然使用标签帮助程序的情况下,是否可以缓解这种情况?

CSHTML

<form asp-controller="PureMvcUiDemo" asp-action="Example" method="post">

控制器

    [HttpGet("pure-mvc-ui-demo/{exampleId?}")]
    public IActionResult Example(int? exampleId)
    {
        //...

        return View(exampleViewModel);
    }

    [HttpPost("pure-mvc-ui-demo")]
    [ValidateAntiForgeryToken]
    public IActionResult Example(ExampleViewModel exampleViewModel)
    {
        // ...
    }

0 个答案:

没有答案