Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/411.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在JS-asp.net MVC中使用@Url.Action_Javascript_C#_Asp.net_Asp.net Mvc - Fatal编程技术网

Javascript 在JS-asp.net MVC中使用@Url.Action

Javascript 在JS-asp.net MVC中使用@Url.Action,javascript,c#,asp.net,asp.net-mvc,Javascript,C#,Asp.net,Asp.net Mvc,我有一个我一直在创建的项目,我在IIS中发布它,一切都很好,我可以可视化我的水晶报告 现在我已经重新发布了这个项目(在IIS中更新),但是我看不到我从js调用的Crystal Reports var url = "/ReporteIngresoVP/RPVistaPreviaIngreso"; window.open(url, "_blank"); 在调用它时,它会打开一个新选项卡(应该是这样),并向我显示一个404: 当我打开另一个报告(从控制器)时,它会显示正确的路径(IIS中的所有内

我有一个我一直在创建的项目,我在IIS中发布它,一切都很好,我可以可视化我的水晶报告

现在我已经重新发布了这个项目(在IIS中更新),但是我看不到我从js调用的Crystal Reports

var url = "/ReporteIngresoVP/RPVistaPreviaIngreso";
window.open(url, "_blank"); 
在调用它时,它会打开一个新选项卡(应该是这样),并向我显示一个404:

当我打开另一个报告(从控制器)时,它会显示正确的
路径
(IIS中的所有内容):

正如我在那里读到的,如果我需要使用指向js中asp.net MVC元素的Url,它们应该与
@Url.Action
一起使用,因此我尝试以下操作:

var url2='@Url.Action("RPVistaPreviaIngreso","CustomerReporteIngresoVP")';
window.open(url2, "_blank"); 
但当我导航时,我会通过以下方式获取URL:

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

问题是您使用的是Razor视图中包含的外部JS文件,显然您无法使用Razor HTML帮助程序在JS文件中呈现完整的URL。您需要将URL作为JS函数参数传递:

外部JS

// create this function to redirect
function redirectToUrl(url)
{
    window.open(url, "_blank"); 
}
剃须刀视图(
标签)


我为解决问题所做的工作可以帮助他人:

创建一个没有任何内容的
div
,只需使用
clas
s和
data request ur
l,在最后一次我发送
@Url.Action()


适用于Visual Studio和已发布项目

JS代码是否存储在外部文件中?听起来像是
Url.Action
helper没有在那里解析。请注意,您不能在外部脚本文件中使用Razor helpers,您需要将其作为函数参数传递。@TetsuyaYamamoto是的,这是一个外部文件。您如何调用包含
窗口的函数。打开
?您能否提供一些详细信息,以便我可以通过使用函数参数传递助手结果来回答?如前所述,除非URL首先作为参数传递。@TetsuyaYamamoto所有操作都从单击函数开始,我做了一些事情,当这些事情完成后,我尝试导航到控制器/视图,最后一部分是ajax
,我编辑了这个问题以包括这一点:AJAX调用也存储在外部JS中?如果这是真的,我建议将click触发器移到Razor
标记中,然后调用包含AJAX和传递的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
       },
       success: function (respuesta) {
           var url = '@Url.Action("RPVistaPreviaIngreso","CustomerReporteIngresoVP")';
           redirectToUrl(url); 
       }
   });
});
<div class="urlPasar" data-request-url="@Url.Action("RPVistaPreviaIngreso","ReporteIngresoVP")"></div>
var url = $('.urlPasar').data('request-url');
window.open(url, "_blank");