У меня есть список, выберите запись, нажмите кнопку редактирования и получите обновленный вид (форму) через ajax. Затем я изменяю некоторые свойства и нажимаю сохранить. Эта форма используется как для создания, так и для обновления данных. Я различаю guish в представлении через ViewBag
, например:
<form asp-action=@(ViewBag.Mode == "new" ? "AddSender" : "UpdateSender") asp-controller="Sender" method="post">
В вызове ajax я получаю свойства отредактированной модели с этим URL: /MasterData/Sender/UpdateSender/3
( 3 здесь только пример). Теперь, когда я сохраняю и отправляю данные обратно, действие обновления не срабатывает, поскольку получение html для представления обновления выглядит следующим образом:
<form method="post" action="/MasterData/Sender/UpdateSender/3">
Вопрос в том, почему метод действия, как это? Почему раньше использовали URL-адрес? Я думал, это должно быть просто UpdateSender
, как и предполагалось.
Чтобы завершить, вот соответствующие действия в следующем порядке:
[Route("{SenderId}")]
public IActionResult UpdateSender(long SenderId)
{
ViewBag.Mode = "update";
return PartialView("Sender", SenderRepository.GetSender(SenderId));
}
[HttpPost]
public IActionResult UpdateSender(Sender Sender)
{
SenderRepository.UpdateSender(Sender);
return RedirectToAction(nameof(List));
}
И у меня есть в верхней части класса контроллера этот атрибут: [Route("MasterData/[controller]/[action]")]