В MVC, почему мой контроллер должен получать "new {id = restaurant.Id}", а не "restaurant.Id"? Разве оба не просто int? - PullRequest
1 голос
/ 18 апреля 2020

Так что мой 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 Ответ

1 голос
/ 18 апреля 2020

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

return RedirectToAction("Details", restaurant);

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...