MVC3相对URL路径 - Javascript

7
我有一个与相对路径相关的问题,即当web应用程序在域的子目录下运行时,路径不正确。例如:http://www.example.com/webapp/ 如果我在页面上使用@Url.Content("~/path/to/action")就没问题了。我甚至可以将@Url.Content("")嵌入javascript脚本中。为了精简页面,我想把javascript放到js文件里并引用它。现在由于@Url.Content被调用到javascript文件中,它似乎无法正常工作(可能是因为很明显的原因)。我该如何解决这个问题?
我看了一下<base />,但那似乎不起作用。

把这个 JavaScript 放在主页面上怎么样? - slandau
1个回答

12

现在您已将所有内容移动到单独的JS文件中,该文件作为静态内容提供服务,因此Razor语法未被解析。

如果您需要在JS中使用可能会更改的相对路径,则应在每个页面中包含一个设置路径变量的脚本,并在此脚本中使用@Url.Content(...),例如:

<script type="text/javascript">
    pathToAction = "@Url.Content(...)";
</script>

接下来,在您的JS文件中声明pathToAction变量,并根据需要使用它。


聪明,我没有想到这种方法。谢谢。我所做的只是使用一些路径,如scriptfolder = '@Url.Content("/Scripts/")',imagefolder = '@Url.Content("/Images/")',然后将它们附加到已经存在的当前URL上。 - fes
我突然想到一个问题,对于样式在CSS文件中的情况怎么办?如果你有图片或背景需要放在一个文件夹里,但是路径需要相对路径。 - fes
1
CSS 中的路径是相对于 CSS 文件而不是加载的页面。因此,你可以使用像 background-image: url('../images/image1.png'); 这样的路径。 - moonpatrol

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接