首页 > 解决方案 > ASP.NET MVC Core 中的路由,标签助手路由到错误的 POST 操作

问题描述

在下面的示例中,当我在http://test.com/pure-mvc-ui-demo(注意没有 ID)并发布表单时,MVC 正确路由到示例控制器操作 ( 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)
    {
        // ...
    }

标签: asp.net-core-mvc

解决方案


推荐阅读