Моя точка зрения подтверждает отсутствие поля идентификатора. в моей форме.
@model GenreUpdateVM
Код: Выделить всё
Update
Cancel
Код: Выделить всё
[HttpGet]
public async Task Update(int id)
{
var request = new RestRequest($"Genres/{id}", Method.Get);
var response = await _restClient.ExecuteAsync(request);
if (!response.IsSuccessful)
{
TempData["Err"] = response.Data.ErrorMessage;
return RedirectToAction(nameof(Index));
}
return View(response.Data.Data);
}
Код: Выделить всё
app.MapControllerRoute(
name: "default",
pattern: "{controller=Home}/{action=Index}/{id?}");
Код: Выделить всё
[HttpPost]
public async Task Update(int id, GenreUpdateVM vm)
{
var request = new RestRequest($"Genres/{id}", Method.Put);
request.AddJsonBody(vm);
var response = await _restClient.ExecuteAsync(request);
if (!response.IsSuccessful)
{
ModelState.AddModelError(response.Data.PropertyName, response.Data.ErrorMessage);
return View();
}
return RedirectToAction(nameof(Index));
}
например: /Home/Update/4 вот как это выглядит, когда я нахожусь в разделе GET, но затем меняю его на /Home/Update/10 и ожидаю ошибку, потому что у меня нет ни одного по идентификатору 10, но он все равно обновил тот, у которого есть идентификатор 4. Помогите мне понять, как маршрутизация, передача и привязка работают в ASP MVC.
Ожидаемое поведение: после просмотра я вручную меняю идентификатор с 4 на 10 в URL-адресе, поэтому мой POST метод должен получить (int Id=10)
Фактическое поведение: мое изменение идентификатора не влияет на идентификатор, который передается в метод POST. Он по-прежнему получает старое значение — 4.
Заранее спасибо
Подробнее здесь: https://stackoverflow.com/questions/790 ... ost-method
Мобильная версия