2011-10-11 58 views
3

問:以下圖像無法解析爲從.js腳本引用的腳本(其中所有其他.js腳本中的js腳本都是〜/腳本) mvc3盒子)部署在虛擬目錄中的mvc3應用程序之後的路徑中找不到圖像

src: '/content/themes/base/images/down.gif' 

這在本地工作,但在遠程部署到iis6.0服務器時不會作爲虛擬目錄。

我曾嘗試:

src: '~/content/themes/base/images/down.gif' 

,但是這不會」本地或遠程解決。

,如果我硬代碼的虛擬目錄路徑(virtualdirectoryname是實際的虛擬目錄)下面將遠程工作

src: 'virtualdirectoryname/content/themes/base/images/down.gif' 
+0

什麼文件夾中的js文件是?你應該只用相對路徑來引用它,這樣它可以在所有情況下工作。 –

+0

腳本與所有其他scxripts:mvc3app \ Scripts \ ea.droplinemenu.js – JaJ

+0

什麼是您的web根本地和遠程的實際完整URL?區別在哪裏? –

回答

0

在JavaScript中不能使用~。 Try:

../Content/themes/base/images/down.gif 
+0

不能遠程(本地工作)。 – JaJ

+0

直接瀏覽圖片工作嗎?讓我們消除權限問題。 –

+0

是的,圖像根據路徑/mvc3app/content/themes/base/images/down.gif在瀏覽器中解析。 – JaJ

0

您可以通過幾種不同的方式處理這個問題。看起來你最好的選擇是創建一個Javascript函數,爲你提供基本的URL,然後用它來建立你的路徑。

下面是http://www.gotknowhow.com/articles/how-to-get-the-base-url-with-javascript這樣一個例子:

function getBaseURL() { 
    var url = location.href; // entire url including querystring - also: window.location.href; 
    var baseURL = url.substring(0, url.indexOf('/', 14)); 


    if (baseURL.indexOf('http://localhost') != -1) { 
     // Base Url for localhost 
     var url = location.href; // window.location.href; 
     var pathname = location.pathname; // window.location.pathname; 
     var index1 = url.indexOf(pathname); 
     var index2 = url.indexOf("/", index1 + 1); 
     var baseLocalUrl = url.substr(0, index2); 

     return baseLocalUrl + "/"; 
    } 
    else { 
     // Root Url for domain name 
     return baseURL + "/"; 
    } 

} 

那麼你的代碼應該是這樣的:

src: getBaseURL() + '/content/themes/base/images/down.gif' 
+0

這給了我我的基地址,http:// hostip而不是http:// hostip/virtualdir。但我需要的是我的工作目錄。 virtualdir映射到容納內容的工作目錄。 – JaJ

+0

只需將其修改回第二/然後。 –

相關問題