Первая проблема: не используйте action="url"
, используйте атрибуты ASP.NET Core, они генерируют правильный URL-адрес для вас, а также обеспечивают наличие AntiForgeryToken в форме:
<form asp-controller="Address" asp-action="Save">
Вторая проблема: [FromBody]
используется для отправки данных в теле запроса, чаще всего в формате JSON, и вы используете содержимое формы.
public IActionResult Save(Address address)
Третья проблема: не используйте оба [Route]
и [Http*]
, предпочитайте использовать только один из них
[HttpPost("/Address/Save")]
Четвертая проблема: эта конфигурация означает, что /
перейдет на Address/Create
, а /Home
перейдет на /Home/Create
, что является очень странным шаблоном:
template: "{controller=Address}/{action=Create}/{id?}");
Я бы посоветовал вам придерживаться первоначального действия Index (или как вы хотите его называть) и установить начальный URL-адрес на /Address/Create
.
template: "{controller=Address}/{action=Index}/{id?}");