JQuery / Ajax публикует сообщение на странице Razor и перенаправляет на возвращенный вид из MVC Action (он же отправляет форму) - PullRequest
0 голосов
/ 08 февраля 2019

Я отправляю массив json в Action MVC через JQuery или AJax, и Action обрабатывает запрос правильно.Однако, тогда MVC Action возвращает View, и мне нужно перенаправить на этот View (или заменить тело на него), но я не знаю как.

Итак, действие работает хорошо, за исключением, вероятно, возвращаемого значения:

    [HttpPost]
    public ActionResult CreateGet(List<string> itemIds)
    {
        List<TempItem> items = new List<TempItem>();
        foreach (string item in itemIds)
        {
            items.Add(CallApi.Get(Request.Cookies["jwt"], "tempitems", item.ToString()).Content.ReadAsAsync<TempItem>().Result);
        }
        Invoice inv = new Invoice()
        {
            IsSupplement = items[0].IsSupplement,
            Date = DateTime.Now,
            Employee = CallApi.Get(Request.Cookies["jwt"], "employees/getprofile").Content.ReadAsAsync<Employee>().Result,
            InvoiceItems = new List<InvoiceItem>()
        };

        foreach(TempItem item in items)
        {
            inv.InvoiceItems.Add(new InvoiceItem { Amount = item.Amount, ProductId = item.ProductId, Product = item.Product });
        }
        return View(inv);
    }

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

    function CreateInvoice(id) {
        var selected = $('#' + id).DataTable().rows('.selected').data();
        var items = [];
        for (i = 0; i < selected.length; i++) {
            items.push(selected[i][0]);
        }
        var postData = { itemIds: items };

        $.ajax({
            type: "POST",
            url: "/Invoices/CreateGet",
            data: postData,
            success: function (data) {
                alert("success");
                window.location.href = data.url;
            },
            dataType: "json",
            traditional: true
        });
    }

Обновление

Ну, я отказался от этой ерунды и продолжил GET-запрос, который передает массив идентификаторов в URL.Я думаю, что просто делаю что-то не так.

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Если вам не нужно ничего делать на реальной странице с данными, возвращаемыми при вызове ajax, вы не должны использовать вызов ajax.Вы можете использовать отправить запрос и перенаправить страницу в бэкэнд на новую страницу.

0 голосов
/ 08 февраля 2019

Вы должны изменить ActionResult на JsonResult.И возвращаемся вот так:

return Json(new {url: "yoururl", inv: yourdata}, JsonRequestBehavior.AllowGet);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...