2011-10-11 20 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

只需将其修改回第二/然后。 –

相关问题