在下面的示例中,当我在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)
{
// ...
}