Итак, мой метод контроллера 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 ответ
Это связано с тем, что MVC ожидает объект, из которого будут извлекаться значения для привязки к параметрам действия. Другими словами, вы могли:
return RedirectToAction("Details", restaurant);
Mvc будет сканировать ваш объект на предмет свойств, которые соответствуют имени и типу аргументов вашего действия, и поэтому должен быть привязан к свойству ресторана «Id». Однако, если вы просто передадите идентификатор ресторана, MVC просканирует тип любого свойства идентификатора вашего ресторана.
Надеюсь это поможет. Если да, отметьте это как ответ;)
Похожие вопросы
Новые вопросы
c#
C # (произносится как «резкий») - это высокоуровневый, статически типизированный язык программирования с несколькими парадигмами, разработанный Microsoft. Код C # обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, включая, среди прочего, .NET Framework, .NET Core и Xamarin. Используйте этот тег для вопросов о коде, написанном на C # или в формальной спецификации C #.