Передача модели представления в URL. Действие - PullRequest
0 голосов
/ 21 мая 2019

Я пытаюсь передать модель представления моему контроллеру.

 @if (User.IsInRole("Customer"))
            {

                <input type="button" class="btn btn-danger" value="Rent Car" onclick="location.href='@Url.Action("PassingCar", "Bookings", new { id = item.VehicleID, Model = Model.Booking })'" />

            }

Я использую динамическую модель, поэтому в этом представлении я могу использовать и Автомобиль, и Бронирование.

Когда код попадает на мой контроллер, идентификатор передается, но данные в ViewModel исчезают.

 public ActionResult PassingCar( int id, CreateBookingViewModel createdModel)
        {
            ///Checks that Vehicle exists in DB and v property is not null
            if (v == null)
            {
                return HttpNotFound();
            }
            else
            {


                /// sets the Vehicle attribute of the BookingViewModel to vehicle passed over
                createdModel.Vehicle = v;

            }
            return RedirectToAction("Create", "Bookings");
        }

Если у кого-то есть представление о том, что я делаю неправильно, это будет с благодарностью.

Ответы [ 2 ]

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

Я обнаружил свою проблему, поэтому я опубликую ответ для любого, кто сталкивался с тем же самым, и найду эту ветку.

Поскольку оба имени в действии URL, где они называются Model, это создаст совершенно новую ViewModel, переданную представлению.Это было связано с тем, что в моем View модель была динамической моделью, которую я создал, поэтому создаваемый объект был заново ExpandoObject.

Решением было бы привести ExpandoObject к правильному типу, но я нашел другой способ решения моей конкретной проблемы, просто используя TempData.В любом случае бы сработало.

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

Можете ли вы опубликовать текст URL, на котором вы в конечном итоге?

Но, возможно, вы захотите заменить Model = Model.Booking на Model = JSON.Encode (Model.Booking)

О. И еще одна вероятность. Вы называете параметр «Модель» в действии URL-адреса, но «createModel» в сигнатуре метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...