Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/363.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函数的MVC路由问题_Javascript_Asp.net Mvc_Asp.net Mvc Routing - Fatal编程技术网

带有Javascript函数的MVC路由问题

带有Javascript函数的MVC路由问题,javascript,asp.net-mvc,asp.net-mvc-routing,Javascript,Asp.net Mvc,Asp.net Mvc Routing,我有一个MVC应用程序,其中我在javascript上使用了很多函数,我有一个独立的文件(这就是为什么我不能使用URL帮助程序)用于那些javascript调用msa.js,它位于我在MVC视图中引用的文件夹脚本中,如下所示: 参考工作正常,但问题出在javascript文件中: 我有很多使用ajax的服务器方法调用,这就是为什么我必须在ajax调用中多次使用属性“url”。 问题是,在我的本地计算机上,它工作正常,url的结构如下: http://localhost:59655/WorkPa

我有一个MVC应用程序,其中我在javascript上使用了很多函数,我有一个独立的文件(这就是为什么我不能使用URL帮助程序)用于那些javascript调用msa.js,它位于我在MVC视图中引用的文件夹脚本中,如下所示:
参考工作正常,但问题出在javascript文件中: 我有很多使用ajax的服务器方法调用,这就是为什么我必须在ajax调用中多次使用属性“url”。 问题是,在我的本地计算机上,它工作正常,url的结构如下:

http://localhost:59655/WorkPanel/GetListOfPermissons
http://10.10.25.161/WorkPanel/GetListOfPermissons
这是正确的!!但当我想上传服务器的应用程序时,我必须使用一个虚拟目录,这就是url更改的原因:

http://10.10.25.161/MSA/WorkPanel/
当我在服务器mvc上执行应用程序时,请尝试将url如下所示:

http://localhost:59655/WorkPanel/GetListOfPermissons
http://10.10.25.161/WorkPanel/GetListOfPermissons
还有一个问题是,不要执行该函数,因为url中缺少目录MSA:这是我的javascript代码示例:

$.ajax({
    type: "POST",
    url:  '/WorkPanel/GetListOfPermissons',
    data: {},
    contentType: "application/json; charset=utf-8",
    dataType: "json",
有谁曾经面对过这个问题??你是怎么解决的。 提前谢谢你。。。
Jose

一个好的解决方案是使用一个全局变量,您可以在其中放置虚拟目录:

var dir = "/WorkPanel"
您的ajax调用将是:

$.ajax({
    type: "POST",
    url:  dir + "/GetListOfPermissons',
    data: {},
    contentType: "application/json; charset=utf-8",
    dataType: "json",
});
当您想使用另一个目录时,只需在文件中进行更改。
希望有帮助,谢谢

您可以使用razor helper将您的基本url呈现为_Layout.cshtml中的全局变量,或将使用此url的某个页面


请记住在声明全局变量后引用您的文件。

感谢所有人的帮助,但我认为不可能找到像属性或方法这样的解决方案,这就是我编写自己的javascript函数并解决问题的原因,也许不是最好的解决方案,但至少不要在函数中使用硬代码。。。这是我的功能,也许有人可以使用它:

function GetUrlAjaxCall(action, controller) {
    var urlmedia = window.location.toString();
    var urlSplit = urlmedia.split('/');
    var url = "";
    if (urlSplit.length == 7)
        url = urlSplit[0].trim() + '//' + urlSplit[2].trim() + '/' + urlSplit[3].trim() + "/" + controller + "/" + action;
    else
        url = urlSplit[0].trim() + '//' + urlSplit[2].trim() + "/" + controller + "/" + action;
    return url;
}

您也可以使用一个函数来检查服务器环境,测试主机ip,并进行如下验证:if(window.location.host==“your.app.production.domain.com”)dir=“/MSA”else dir=“/WorkPanel”非常感谢您的回答,但在这种情况下,我应该有硬代码中的虚拟目录,在这种情况下,WorkPanel不是一个目录,而是一个控制器,目录应该是动态的,我可能不知道目录文件夹的名称。。。再次感谢,非常感谢,但这不可能,因为javascript函数它位于一个单独的文件中,您不能这样做,因为服务器将其解释为字符串。。。谢谢,教授,我没有意识到这一点。您可以使用@netrevisanto解决方案,但可以使用window.location