javascript - JQuery/Ajax 在 Razor 页面中发布并重定向到从 MVC Action(又名表单提交)返回的 View

标签 javascript jquery ajax asp.net-mvc razor

我通过 JQuery 或 AJax 将 json 数组发布到 MVC Action,并且 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);
    }

还有 razor 页面内的脚本,用于收集选定的 id 并将它们发布到操作中。 发布后没有发生任何其他事情,甚至没有调用警报,即使 View 页面存在并且我在控制台中没有看到失败。

    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
        });
    }

更新

好吧,我放弃了那些废话,坚持使用在 URL 中传递 id 数组的 GET 请求。我想我只是做错了事情。

最佳答案

您应该将 ActionResult 更改为 JsonResult。 并像这样返回:

return Json(new {url: "yoururl", inv: yourdata}, JsonRequestBehavior.AllowGet);

关于javascript - JQuery/Ajax 在 Razor 页面中发布并重定向到从 MVC Action(又名表单提交)返回的 View ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54585977/

相关文章:

c# - 将 JSON 对象传递给 MVC

javascript - FFMPEG - 如何将覆盖视频的大小设置为输入大小

javascript - 如何创建我自己的类的实例,但使其行为像节点

javascript - 检测脚本的位置而不是调用它的页面

javascript - JQuery AJAX 尝试解析 XML,即使使用 "dataType": "JSON"

javascript - 如何获得背景颜色和颜色不同的字符串?

javascript - Bootstrap 动态模态

javascript - 通过 javascript 和凭证提供商进行身份验证的 AWS API 网关

jquery - 仅显示特定 Div 中的元素

javascript - 单击()获取类名