Как перенаправить по определенному пути ASP.NET MVC 5 - PullRequest
0 голосов
/ 09 июля 2019

У меня есть вызов ajax для действия контроллера, называемого ExportToExcel.ExportToExcel создает URL-адрес и возвращает его в json клиенту, который вызывает другое действие контроллера при успешном выполнении ajax.

Приведенный ниже код работает локально, но не на dev.Путь локально состоит только из базового пути (например, http://localhost:portNumber/controllerName/actionName), в то время как в dev, после базового пути есть путь, затем добавляется имя и действие контроллера (например, dev / appName / controllerName / actionName)

Howдобавить downloadExcelUrl в dev / appName вместо dev / appName?

Ajax-вызов Action One в контроллере

     $("#exportToExcel").click(function () {

            $.ajax({
                cache: false,
                url: '@Url.Action("ExportToExcel", "Test")',
                success: function (result) {
                    window.location.href = result.redirectUrl;
                },
                error: function (xhr) {
                    console.log("Error in ajax call to ExportToExcel: " + xhr.status + xhr.responseText);
                }
            });

    });

Action One в контроллере, который создает URL-адрес для Action Two public JsonResult ExportToExcel () {try {// некоторый код

            string handle = Guid.NewGuid().ToString();

            using (MemoryStream memoryStream = new MemoryStream())
            {
                wb.SaveAs(memoryStream);
                memoryStream.Position = 0;
                Session[handle] = memoryStream.ToArray();
            }


            var urlBuilder = new UrlHelper(Request.RequestContext);
            var downloadExcelUrl = urlBuilder.Action("DownloadExcel", "Test", new { fileGuid = handle, fileName = "Excel_Form.xlsx" });
            return Json(new { status = "success", redirectUrl = downloadExcelUrl }, JsonRequestBehavior.AllowGet);

        }
        catch (Exception ex)
        {

            return Json("Exception thrown in ExportToExcel", JsonRequestBehavior.AllowGet);
        }
    }

Действие Два в контроллере

    [HttpGet]
    public virtual ActionResult DownloadExcel(string fileGuid, string fileName)
    {
        try
        {
            if (Session[fileGuid] != null)
            {
                byte[] data = Session[fileGuid] as byte[];
                return File(data, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", fileName);
            }
            else
            {
                return new EmptyResult();
            }
        }
        catch (Exception ex)
        {
            return new EmptyResult();
        }
    }

Локально:

http://localhost:51865/Test/ExportToExcel?_=1562712387404

http://localhost:51865/Test/DownloadExcel?fileGuid=00b2bca3-e323-45e4-97a8-4cdcc78eb445&fileName=Excel_Form.xlsx

на Dev:

http://dev/appName/Test/Process/undefined

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...