Отправка сложного объекта из поля зрения в действие MVC как вызов ajax - PullRequest
2 голосов
/ 08 июля 2019

Я работаю над веб-приложением ASP.NET MVC .Существует представление с кучей поисковых фильтров, а также посередине страницы находится сетка, представляющая результат поиска.

Конечное значение, установленное для фильтра поиска и при нажатии кнопки поискаAjax-вызов возвращает значения, которые будут привязывать Gird.каждая строка в сетке представляет «ItemId» и «version», которые могут быть выбраны флажком.

В конце, когда пользователь нажимает «Detail report», нам нужно перенаправить пользователяна другую страницу (просмотр).

Мне нужно передать выбранные поисковые фильтры и значения выбранных строк сетки в виде массива, подобного этому (ItemIds[] and Versions[]), в действие "Detail".

Итак, чтобы прояснить вопрос.Мне нужно передать следующие значения в действие:

  1. фильтры поиска
  2. массив ItemId
  3. массив версий

К сожалению, яне может передать параметры в действие.Я получил null

Я не могу вызвать действие как ajax-вызов. Когда я использую

Просмотр (Index.cshtml)

 function prepareSelectedInfos() {
            var formValues = $('#form').serializeFormToObject();
            var gridValues = GetGridSelectedValues();
            var dto = {
                FormFilters: formValues,
                ItemIds : gridValues.ItemIds,
                Versions : gridValues.Versions
            } 
            return dto;
        }


  $('#lnkDetailReport').click(function () {
            var gridValues = GetGridSelectedValues();

            var url = '/Report/Controller/Detail/';
            var dto = prepareSelectedInfos();
            window.open(url + dto, '_blank');
        });

Контроллер

  public ActionResult Detail(ModelVersionStatisticalDetailDto data)
        {

            //create a ViewModel according to the incoming data
            var viewModel = ;
            return View(viewModel);
        }

Модель

  public class ModelVersionStatisticalDetailDto
    {
        public ModelVersionStatisticalReportDto FormFilters { get; set; }
        public int [] ItemIds { get; set; }
        public string[] Versions { get; set; }
    }

Мне нужно иметь подготовленные для просмотра значения в действии Подробно

1 Ответ

2 голосов
/ 08 июля 2019

Насколько я помню, невозможно выполнить перенаправление после публикации сложного объекта в вызове ajax (с такими же опубликованными параметрами). Чтобы выполнить желаемую операцию, вы можете выбрать решение снизу.

  1. Используйте строки запроса в своем действии Detail и выполните простое действие post вместо вызова ajax
  2. Попробуйте заменить ответ Detail action на Partial View
  3. Если вы ищете решение на стороне клиента, вы можете помочь с объектом localStorage (хитрое решение). Вы можете сохранить необходимые данные в объекте localStorage и передать ключ контроллеру. На целевой странице используйте ключ для извлечения данных, хранящихся в хранилище. Не забудьте очистить его после процесса. https://blog.logrocket.com/the-complete-guide-to-using-localstorage-in-javascript-apps-ba44edb53a36/
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...