Передать сгенерированный идентификатор на следующую страницу в виде параметра строки запроса через контроллер - PullRequest
0 голосов
/ 21 мая 2019

У меня есть функция контроллера, которая добавляет данные в базу данных, я передаю данные в представление, которое содержит подробную информацию о представленной форме. Я хотел бы передать идентификатор идентификации, сгенерированный в виде строки запроса, поэтому, если кто-то обновит страницу, у меня будет идентификатор добавленных сведений.

Я пытался добавить его для формирования параметров записи, но он не работает

Функция контроллера bvm.Booking имеет генерируемый столбец идентификаторов BookingID.

 public ActionResult RequestBookingCustomer(BookingViewModel bvm)
{
            _context.Booking.Add(bvm.Booking);              
            _context.Messages.Add(bvm.Messages);
            _context.PetInformation.Add(bvm.Pets);
            _context.SaveChanges();

            return View("BookingDetails", bvm);
}

Просмотр сведений о бронировании имеет простую страницу сведений. URL на этой странице www.xxx.com/Booking/RequestBookingCustomer без параметров

  <div class="profile-services">
            @*Show all the booking details here*@

            <span>Name:@Html.DisplayFor(model => model.Name)</span>
            <br />
            <span>Weight:@Html.DisplayFor(model => model.Weight)</span>
            <br />
            <span>Age:@Html.DisplayFor(model => model.AgeYears) Years</span>
            <br />
   </div>

Как передать идентификатор, сгенерированный в виде строки запроса, чтобы, если кто-то обновляет страницу, он вызывал RequestBookingCustomer с некоторым идентификатором, который я могу проверить, чтобы он снова добавлялся в базу данных?

Что я делаю не так и как это можно исправить в контроллере MVC для просмотра?

1 Ответ

0 голосов
/ 22 мая 2019

вы можете использовать метод RedirectToAction и передавать BookingId в качестве параметра строки запроса к нему следующим образом:

public ActionResult RequestBookingCustomer(BookingViewModel bvm)
{
            _context.Booking.Add(bvm.Booking);              
            _context.Messages.Add(bvm.Messages);
            _context.PetInformation.Add(bvm.Pets);
            _context.SaveChanges();
            // redirect to get booking details action medthod
            return RedirectToAction("BookingDetails", new { BookingId = bvm.BookingId});
}

, затем внутри BookingDetails получить данные бронирования загрузки метода действия в соответствии с этим параметром следующим образом:

public ActionResult BookingDetails (int BookingId)
{
   // load booking data for this BookingId
   var BookingData =  _context.Booking.Find(BookingId);

   return view(BookingData);
}
...