2011-05-04 155 views
7

我有一个相对路径的问题,当Web应用程序在域的子目录下运行时,路径不正确。例如http://www.domain.com/webapp/MVC3相对URL路径 - Javascript

如果我在页面上使用@ Url.Content(“〜/ path/to/action”),那很好。我甚至可以在JavaScript脚本中嵌入@ Url.Content(“”)。我想清理我想把JavaScript放入一个js文件并引用它的页面。现在,@ Url.Content正在JavaScript文件内部调用,它似乎没有工作(可能是显而易见的原因)。我怎样才能解决这个问题?我看过<base />,但这似乎不起作用。

+0

把这个javascript放在母版页中怎么样? – slandau 2011-05-04 21:13:59

回答

12

现在,您已将所有内容移至单独的js文件中,该文件将作为静态内容提供,并且Razor语法不会被解析。

如果您需要可能会更改的js中的相对路径,那么您应该在每个设置了路径var的页面中包含一个脚本,并在此脚本中使用@ Url.Content(...),例如,

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

然后,在js文件中声明pathToAction var,并根据需要使用它。

+0

聪明,我没有想到这种方法。谢谢。 我所做的只是使用一些像scriptfolder ='@ Url.Content(“〜/ Scripts /”)',imagefolder ='@ Url.Content(“〜/ Images /”)'的路径,然后只是附加它们到当前已经存在的网址。 – fes 2011-05-04 21:48:56

+0

我只是有一个想法,CSS样式在CSS文件中怎么样?如果你有一个文件夹的图像或背景,但需要相对路径。 – fes 2011-05-05 23:24:35

+1

CSS中的路径与CSS文件相关,而不是加载的页面。所以你可以做一些路径,例如'background-image:url('../ images/image1.png');' – moonpatrol 2012-05-02 04:49:11