2011-05-25 152 views
8

我得到了一个.NET MVC3项目,该项目刚刚部署到虚拟目录中的实际服务器上。我们称之为VirtDir。我的JavaScript文件都有像这样定义的AJAX URL:带有虚拟目录的IIS中的AJAX url路由问题

"/Home/Save/" 

这在当地工作正常。

在实际的服务器,即第一个“/”杀死虚拟目录,所以我得到

"/Home/Save/"代替"/VirtDir/Home/Save/"这显然失败。

如果删除第一个“/”,然后在本地的东西打破,导致定义的URL被附加到当前页面的URL:如果你在"/Home/Index"页,AJAX的URL将指向

"/Home/Index/Home/Save"

我的JavaScript是分开的* .js文件,所以我不能真的写@Url.Content给他们。

任何人都知道这个问题的一个很好的解决方案?

回答

22

您可以添加一些代码到您的布局文件或母版页,在包含JS文件之前将根目录写出到JS变量。然后,您可以使用该变量在您的JS文件中构建路径。

在剃刀:

<script type="text/javascript"> 
    var rootDir = "@Url.Content("~/")"; 
</script> 
<script src="@Url.Content("~/Scripts/MyScript.js")" type="text/javascript"></script> 

然后,你可以建立自己的网址在你的文件是这样的:

var myurl = rootDir + "Home/Save/"; 
+1

感谢。我实际上最终做了类似的事情。 – Dimskiy 2011-05-26 19:20:44

+0

hello @Dimskiy,你能评论你最终做了什么吗? – 2017-02-24 21:20:29

+0

@LexyFeito这是在2011年... – Dimskiy 2017-03-15 19:06:05