带有Javascript函数的MVC路由问题
我有一个MVC应用程序,其中我在javascript上使用了很多函数,我有一个独立的文件(这就是为什么我不能使用URL帮助程序)用于那些javascript调用msa.js,它位于我在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
参考工作正常,但问题出在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