Para facilitarme la navegación de este reto fue hace todo por medio de botones para ir a las vistas, haciendo uso del Viewbag para poder reutilizar la vista de “Multi”
public IActionResult MultiCourse()
{
ViewBag.Create = "/Course/Create";
ViewBag.Update = "/Course/Update";
ViewBag.Delete = "/Course/Delete";
return View(_context.Courses.ToList());
}
Luego creé los métodos de Editar curso, y al momento de guardar los cambios usé “RedirectToAction” para que la URL también cambiara
public IActionResult Update(string id)
{
var Course = from cour in _context.Courses
where cour.id == id
select cour;
return View(Course.SingleOrDefault());
}
[HttpPost]
public IActionResult Update(Course newData, string id)
{
if(ModelState.IsValid){
var CourseSearch = from cour in _context.Courses
where cour.id == id
select cour;
var Course = CourseSearch.SingleOrDefault();
Course.address = newData.address;
Course.name = newData.name;
Course.journey = newData.journey;
_context.SaveChanges();
ViewBag.Create = "/Course/Create";
ViewBag.Update = "/Course/Update";
ViewBag.Delete = "/Course/Delete";
return RedirectToAction("MultiCourse");
}
return View(newData);
}
Luego para la acción de eliminar, el botón pasa por medio la URL el id, la acción del controlador lo busca en el contexto, lo elimina y hace redirect a la vista de Multi
public IActionResult Delete(string id)
{
var CourseSearch = from cour in _context.Courses
where cour.id == id
select cour;
_context.Courses.Remove(CourseSearch.FirstOrDefault());
_context.SaveChanges();
ViewBag.Create = "/Course/Create";
ViewBag.Update = "/Course/Update";
ViewBag.Delete = "/Course/Delete";
return RedirectToAction("MultiCourse");
}
Creo que lo del viewbag no es una buena práctica, pero por el momento fue lo que se me ocurrió 😄
¿Quieres ver más aportes, preguntas y respuestas de la comunidad?