Итак, я наконец-то получил помощь от моего преподавателя, поэтому первый бит кода контроллера, который выглядит так:
public IActionResult Create()
{
ViewData["PassengerId"] = new SelectList(_context.Passengers, "Id", "Email");
ViewData["FlightId"] = new SelectList(_context.Flights, "Id", "Name");
return View();
}
, в некотором смысле уже является моделью представления и защищает данные.
теперь работа со вторым битом кода контроллера:
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("PassengerId,IdF,Attended")] FlightBookingViewModel model)
{
if (ModelState.IsValid)
{
FlightBooking flightBooking = new FlightBooking
{
PassengerId = model.PassengerId,
FlightId = model.FlightId,
Attended = model.Attended
}
await _context.Guests.AddAsync(flightBooking);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(Index));
}
ViewData["PassengerId"] = new SelectList(_context.Customers, "Id", "Email", model.PassengerId);
ViewData["FlightId"] = new SelectList(_context.Events, "Id", "Name", model.FlightId);
return View(model);
}
Таким образом, я могу получить раскрывающееся меню, работающее, когда идентификаторы идентификаторов моделей именуются так же, как идентификаторы данных
Проблема, похоже, заключалась в том, что имена идентификаторов не были распознаны. поэтому, когда имена идентификаторов viewmodels совпадают с именами данных, проблемы исчезли, и я все еще использую viewmodels