Использование @ Url.Action в JS-asp.net MVC - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть проект, который я создавал, и я публикую его в IIS, там все хорошо, я могу визуализировать свои отчеты Crystal Reports.

Теперь я переиздал проект (обновление вIIS), но я не вижу свои отчеты Crystal Reports, которые я звоню с js.

var url = "/ReporteIngresoVP/RPVistaPreviaIngreso";
window.open(url, "_blank"); 

Во время вызова он открывает новую вкладку (как и должно быть) и показывает мне 404:

enter image description here

Когда я открываю другой отчет (из контроллера), он показывает мне правильный path (все из IIS):

enter image description here

Поскольку я читал там, если мне нужно использовать URL, которые указывают на элементы asp.net MVC из js, они должны идти с @Url.Action, поэтому япопробуйте следующее:

var url2='@Url.Action("RPVistaPreviaIngreso","CustomerReporteIngresoVP")';
window.open(url2, "_blank"); 

Но при навигации я получаю URL-адрес следующим образом:

enter image description here

Как я могузавершить маршрут или я могу перейти к представлению / контроллеру, что я хочу в обоих случаях, Visual Studio и проект, опубликованный с использованием javascript?

ОБНОВЛЕНИЕ

Я пытаюсь перейти от функции щелчка, я никогда не передаю URL, что я могу изменить?

$('.vpBTN').click(function () {

        //OTHER DATA
        $.ajax({
            url: "setDatosIngreso",
            method: "POST",
            data: {
                factura: datoFactura,
                poliza: datosPoliza,
                fecha: datosFecha,
                via: datosVia,
                bruto: datosBruto,
                neto: datosNeto,
                bultos: datosBultos
            },
            async: false,
            //dataType: "json",
            success: function (respuesta) {
                var url = "IKOR/ReporteIngresoVP/RPVistaPreviaIngreso";
                window.open(url2, "_blank"); 
            }
        });
    });

Ответы [ 2 ]

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

Что я сделал, чтобы решить эту проблему и чем-то помочь:

Создайте div, в котором ничего нет, только с clas s и data-request-ur l, в этом последнем я отправляю свой @Url.Action()

<div class="urlPasar" data-request-url="@Url.Action("RPVistaPreviaIngreso","ReporteIngresoVP")"></div>

В JS захватить значение data в div

var url = $('.urlPasar').data('request-url');
window.open(url, "_blank");

Работает как в Visual Studio, так и в опубликованном проекте

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

Проблема в том, что вы используете внешний файл JS, включенный в представление Razor, и, очевидно, вы не можете использовать помощники Razor HTML для отображения полного URL-адреса внутри файла JS.Вместо этого вам нужно передать URL как параметр функции JS:

Внешний JS

// create this function to redirect
function redirectToUrl(url)
{
    window.open(url, "_blank"); 
}

Просмотр бритвы (тег <script>)

$('.vpBTN').click(function () {
    // other data

    $.ajax({
       url: "setDatosIngreso",
       method: "POST",
       data: {
           factura: datoFactura,
           poliza: datosPoliza,
           fecha: datosFecha,
           via: datosVia,
           bruto: datosBruto,
           neto: datosNeto,
           bultos: datosBultos
       },
       success: function (respuesta) {
           var url = '@Url.Action("RPVistaPreviaIngreso","CustomerReporteIngresoVP")';
           redirectToUrl(url); 
       }
   });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...