Итак, мой метод контроллера mvc принимает в качестве аргумента int id. Мне интересно, почему требуется новый "{id = restaurant.Id}", а "restaurant.Id" недостаточно.

 [HttpPost]
    [ValidateAntiForgeryToken]
    public ActionResult Edit(Restaurant restaurant)
    {
        if (ModelState.IsValid)
        {
            db.Update(restaurant);

            return RedirectToAction("Details", new { id = restaurant.Id });
        }
        return View(restaurant);
    }
1
Marty Carr 18 Апр 2020 в 12:36

1 ответ

Лучший ответ

Это связано с тем, что MVC ожидает объект, из которого будут извлекаться значения для привязки к параметрам действия. Другими словами, вы могли:

return RedirectToAction("Details", restaurant);

Mvc будет сканировать ваш объект на предмет свойств, которые соответствуют имени и типу аргументов вашего действия, и поэтому должен быть привязан к свойству ресторана «Id». Однако, если вы просто передадите идентификатор ресторана, MVC просканирует тип любого свойства идентификатора вашего ресторана.

Надеюсь это поможет. Если да, отметьте это как ответ;)

2
Charles d'Avernas 18 Апр 2020 в 10:48