我有一个.NET MVC3
项目,它刚刚部署到虚拟目录中的实际服务器上。我们称之为VirtDir
。我的JavaScript文件都有AJAX的URL,如下所示:
"/Home/Save/"
在当地运作良好。
在实际的服务器上,第一个“/”杀死了虚拟目录,所以我得到了
"/Home/Save/"
代替明显失败的"/VirtDir/Home/Save/"
。
如果我删除第一个“/”,那么事情会在本地中断,导致定义的URL被附加到当前页面的URL:如果您在"/Home/Index"
页面上,则AJAX URL将指向< / p>
"/Home/Index/Home/Save"
。
我的JavaScript位于单独的* .js文件中,因此我无法真正为它们写@Url.Content
。
任何人都知道这个问题有一个很好的解决方案吗?
答案 0 :(得分: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/";