Как передать viewmodel в метод успеха ajax и перенаправить на новую страницу только с помощью viewmodel

#jquery #ajax #asp.net-mvc

#jquery #ajax #asp.net-mvc

Вопрос:

Что я пытаюсь сделать с помощью jQuery amp; Ajax, так это собрать данные (как объект) из этой первой формы и 1) сохранить данные или 2) опубликовать их в ASP.NET контроллер (viewmodel получит данные от этого объекта), а затем перенаправит на новую страницу 1) наедине с этим объектомили 2) с помощью viewmodel, переданной с контроллера (потому что мне нужны данные для создания другой формы).

Код для первой формы:

     $('.submit').on('click', function (event) {
            // some irrelevant logic;


            var viewModel = { DayName: picked_dayName, DayNumber: picked_day, Month: picked_month, StartTime: picked_startTime, EndTime: picked_endTime };

            $.ajax({
                url: '/Venue/Datepicking',
                data: viewModel,
                cache: false,
                type: 'post',
                dataType: 'json',
                success: function toDetailPage(data) {
                    if (data.IsDataValid) {
                        window.location.href = '/Venue/ContactDetail';
                    }
                }
            });
        });
    });
  

Код в контроллере для представления:

     [HttpPost]
    public IActionResult DatePicking(BookingDataTimeViewModel viewModel)
    {
        return View(viewModel);
    }
  

Код в контроллере для новой страницы, на которую я пытался направить:

     [HttpGet]
    public IActionResult ContactDetail(BookingDataTimeViewModel viewModel)
    {
        return View(viewModel);
    }
  

Проблема в том, что я всегда возвращаюсь на домашнюю страницу, нажимая кнопку отправки. Просьба показать мне способ принудительно выполнить это или любое решение, которое решает эту проблему. Заранее спасибо.

Я использую приведенный ниже код вместо ajax:

 $.post('/Venue/Datepicking', viewModel, function (result) {
    window.location.href = '/Venue/ContactDetail';
});
  

Но результат все тот же.

Комментарии:

1. Весь смысл ajax в том, чтобы оставаться на той же странице. Если вы хотите перенаправить, сделайте обычную отправку (не используйте ajax)

2. И ваш DatePicking() метод возвращает представление (html), а не json, поэтому ваш код выдаст ошибку

3. $.post() ЯВЛЯЕТСЯ ли ajax 🙂