В следующем примере, когда я нахожусь на http://test.com/pure-mvc-ui-demo
(примечание без ID) и отправляю форму, MVC правильно перенаправляет на перегрузку POST действия контроллера примера (http://test.com/pure-mvc-ui-demo
).
Когда я нахожусь на 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)
{
// ...
}