Ajax отправляет сообщение в контроллер, перенаправляет пользователя на новую страницу / представление, передавая сложную глубокую модель просмотра - PullRequest
0 голосов
/ 23 января 2019

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

В настоящее время у меня есть флажки в форме.Форма не имеет значения, поскольку она сохраняет текущую запись, но означает, что я не могу создать вложенную форму для отправки этих данных, что делает Ajax необходимостью (я могу ошибаться).

Когда флажки установлены, появляется кнопка.Когда кнопка нажата, она отправляет значения отмеченных полей в другой контроллер из исходного представления, используя ajax.

Затем контроллер создает глубоко сложный объект модели представления, который мне нужно вернуть в представление, котороесодержит данные, относящиеся к ранее установленным флажкам.

Я не могу заставить браузер перенаправить и передать требуемые данные.Исходный ajax-запрос поступил из / Controller1 / Edit, и мне нужно перенаправить пользователей в / Controller2 / Details при передаче данных модели представления.

  • Я пытался использовать RedirectToAction () с TempData для другого метода, которыйзатем возвращает представление, однако оно не перенаправляет браузер на правильную страницу.
  • Если я перенаправлю страницу после успешного выполнения AJAX, я не смогу передать модель представления на новую страницу, поскольку она не будет сериализована
  • Поскольку я писал с помощью Ajax, я не могу просто вернуть представление, потому что браузер не перенаправлен

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

Рад опубликовать код, но, учитывая, что я ищу альтернативные решения, возможно, в этом нет необходимости.

Ответ

Я оставил ajax для публикации значений своих флажков вконтроллер

 $.ajax({
     url: AppSettings.baseUrl + "BOM/getMultiBOM",
     type: 'POST',
     data: JSON.stringify(dataArr),
 }).done(function (result) {
       location.href = "/BOM/OpenMultiBOM";

 });

В моем контроллере я присвоил опубликованные значения postModel, а затем сохранил их в TempData.Ключевым моментом здесь было вернуть значение Json, которое затем позволило бы выполнить перенаправление на стороне клиента.

 public ActionResult getMultiBOM(multiBOMPostModel multiBOMPostModel)
    {  
        TempData["BOMs"] =  multiBOMPostModel;
        return Json("success");
    }

Затем у меня был другой метод HttpGet, который загружался бы после перенаправления страницы результатом Ajax.и преобразовал TempData в объект.

[HttpGet]
    public ActionResult OpenMultiBOM(int? BomMarkupMessage = null)
    {
        var bomIds = TempData["BOMs"] as multiBOMPostModel;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...