2011-05-04 157 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