Когда этот код запускается
return RedirectToAction("Jobs", new { id = newId });
значение, содержащееся в id, теряется, когда вы попадаете сюда
public ActionResult Jobs(int? id)
, поскольку в таблице маршрутизации вы не указали id
, только name
.
routes.MapRoute(
"Jobs",
"{controller}/{action}/{name}",
new { contrller = "jobController", action = "Jobs", name = UrlParameter.Optional });
Могу ли я предложить это проверенное быстрое исправление:
В контроллере:
[HttpPost]
public IActionResult Index(int id)
{
var name = _db.MyDB.Where(p => p.id == id).FirstOrDefault();
return RedirectToAction(nameof(Jobs), new { id, name });
}
[HttpGet]
public IActionResult Jobs(string name, int id)
{
var allDetails = _db.MyDB.Where(p => p.id == id).FirstOrDefault();
return View(allDetails);
}
и в таблице маршрутизации:
routes.MapRoute(
name: "Jobs",
template: "{controller}/{name}/{id}",
defaults: new { controller = "jobController", action="Jobs" });
В вашем коде еще многое можно улучшить, но я надеюсь, что это прояснит ваш вопрос.Удачного кодирования!