Я действительно застрял в этом и ищу альтернативные предложения о том, как этого можно достичь.
В настоящее время у меня есть флажки в форме.Форма не имеет значения, поскольку она сохраняет текущую запись, но означает, что я не могу создать вложенную форму для отправки этих данных, что делает 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;
}