我有一个正在创建的项目,并将其发布在IIS中,一切都很好,我可以可视化我的Crystal Reports报告。
现在,我已经重新发布了该项目(IIS中的更新),但是我看不到我从js调用的Crystal Reports报告。
var url = "/ReporteIngresoVP/RPVistaPreviaIngreso";
window.open(url, "_blank");
在调用它时,它会打开一个新标签页(应有的样子)并显示404:
当我从控制器打开另一个报告时,它向我显示正确的path
(来自IIS的所有信息):
我在那儿读到,如果我需要使用指向js中的asp.net MVC元素的URL,它们应该与@Url.Action
一起使用,所以我尝试以下操作:
var url2='@Url.Action("RPVistaPreviaIngreso","CustomerReporteIngresoVP")';
window.open(url2, "_blank");
但是当我导航时,我是通过以下方式获取网址的:
在两种情况下(Visual Studio和使用javascript发布的项目),我如何才能完成路线或转到视图/控制器?
更新
我尝试从点击功能导航,我从不传递任何网址,我可以修改什么?
$('.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");
}
});
});
答案 0 :(得分:1)
问题是您正在使用Razor视图中包含的外部JS文件,并且显然您不能使用Razor HTML帮助器在JS文件中呈现完整的URL。您需要改为将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);
}
});
});
答案 1 :(得分:0)
我为解决该问题所做的工作并可以帮助某人:
创建一个完全不包含div
和clas
l的data-request-ur
@Url.Action()
在JS中,捕获<div class="urlPasar" data-request-url="@Url.Action("RPVistaPreviaIngreso","ReporteIngresoVP")"></div>
中的data
的值
div
在Visual Studio和已发布项目中均可使用