Я создаю приложение, которое бронирует гостей в гостиничных номерах. Я пытаюсь редактировать гостей в списке, который содержится в ReservationViewModel. В GET я успешно передаю ViewModel с двумя пустыми гостевыми элементами в View и создаю редакторы в View. Всякий раз, когда я отправляю обратно ReservationVM и пытаюсь прочитать их, список отображается пустым. Я изменил свой цикл foreach на цикл for, как это предлагалось, но, похоже, это не работает. Список кажется пустым, я пытаюсь напечатать сообщение всякий раз, когда оно пытается прочитать из списка, но ничего не выводится.
Вот мой GET:
[HttpGet]
public ActionResult Edit2(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
Reservation reservation = resRepo.GetReservationByID(id);
ReservationVM reservationVM = new ReservationVM(0);
for (int i = 0; i < reservation.amount_people; i++)
{
reservationVM.guests.Add(new Guest());
}
foreach (Guest guest in reservationVM.guests)
{
guest.name = " ";
guest.zipcode = " ";
guest.housenumber = 0;
guest.suffix = "";
guest.email = " ";
guestRepo.AddGuest(guest);
}
guestRepo.Save();
reservationVM.date = (DateTime)reservation.date;
reservationVM.amount_people = (int)reservation.amount_people;
reservationVM.ID = reservation.ID;
reservationVM.room_ID = (int)reservation.room_ID;
if (reservation == null)
{
return HttpNotFound();
}
return View(reservationVM);
}
Вот мой пост:
[HttpPost]
public ActionResult Edit2(ReservationVM reservationVM)
{
if (ModelState.IsValid)
{
//Get reservation
Reservation reservation = resRepo.GetReservationByID(reservationVM.ID);
//Update values in model
reservation.date = reservationVM.date;
reservation.amount_people = reservationVM.amount_people;
reservation.ID = reservationVM.ID;
reservation.room_ID = reservationVM.room_ID;
Debug.WriteLine(reservation.ID);
//Update to DB and save changes
resRepo.UpdateReservation(reservation);
resRepo.Save();
foreach(Guest guest in reservationVM.guests)
{
Debug.WriteLine("hello");
guestRepo.UpdateGuest(guest);
reservation.Guests.Add(guest);
}
guestRepo.Save();
db.SaveChanges();
return RedirectToAction("Index");
}
return View(reservationVM);
}
Вот мой взгляд:

Редактирование: Передача списка из ViewModel из View в Controller в ASP.NET MVC?