Вы получаете ошибку, потому что вы не передаете идентификатор методу контроллера.
У вас есть два варианта:
- Всегда передавайте действительный идентификатор методу контроллера или
- Использовать int? параметр и объединить нуль перед вызовом GetMaterial (id).
В любом случае, вы должны проверить нулевое значение для material
. Итак:
public ActionResult Details(int? id)
{
Material material = consRepository.GetMaterial((int)(id ?? 0));
if (id == null)
return View("NotFound");
return View();
}
Или (при условии, что вы всегда передаете правильный идентификатор):
public ActionResult Details(int id)
{
Material material = consRepository.GetMaterial(id);
if (id == null)
return View("NotFound");
return View();
}
Чтобы передать действительный идентификатор методу контроллера, вам нужен маршрут, который выглядит примерно так:
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id="" }
);
И URL, который выглядит следующим образом:
http://MySite.com/MyController/GetMaterial/6 <-- id