指定多站点web服务器和本地主机上的相对路径
Specifying a relative path on a multiple site web server and localhost
我有一个ASP。NET网站,该网站被发布到具有多个站点的web服务器。例如:
www.example.com/SiteA
或www.example.com/SiteB
另外,在发布之前,我也在本地测试网站,例如在localhost:12345
当我为映像指定路径时,例如:/Images/exampleImage.gif
,这在本地运行站点时有效,因为Images文件夹位于根目录中。localhost:12345/Images/exampleImage.gif
是本例中正确的路径。
但是当发布到web服务器时,例如www.example.com/SiteA
,同样的路径试图去www.example.com/Images/exampleImage.gif
,图像不能正确显示
另外,这只适用于HTML控件,与ASP控件一样,我知道我可以使用波浪(~/Images/exampleImage.gif
),它会知道查看网站的根目录,即www.example.com/SiteA/Images/exampleImage.gif
。
对于我来说,我强烈建议使用HTML控件。
编辑:这样做的原因是因为我有JavaScript改变一个html img控件的图像基于如果一个div是隐藏的:function Toggle(commId, imageId) {
var div = document.getElementById(commId);
var img = document.getElementById(imageId);
if (div.style.display == 'none') {
div.style.display = 'inline';
img.src = "/Images/minus.gif";
} else {
div.style.display = 'none';
img.src = "/Images/plus.gif";
}
}
我怎么能得到路径到图像文件夹,相对于网站的根当每个网站在服务器上的文件夹,以及仍然在本地主机上工作?
您必须使用代码执行~/或在服务器上发布一个名为"/Images"的新虚拟目录,其中包含图像。
我不知道你可以在JavaScript中嵌入c#代码,但只要做:
function Toggle(commId, imageId) {
var div = document.getElementById(commId);
var img = document.getElementById(imageId);
if (div.style.display == 'none') {
div.style.display = 'inline';
img.src = "<%= ResolveUrl("~/Images/minus.gif") %>";
} else {
div.style.display = 'none';
img.src = "<%= ResolveUrl("~/Images/plus.gif") %>";
}
}
由于ResolveUrl
方法可以采用波浪(~)作为路径值,并且知道网站的根目录高于服务器的根目录。
您也可以直接在img html控件(和其他属性/控件)的src
属性中使用相同的ResolveUrl
方法的嵌入代码,以防有人遇到同样的问题,但只是html控件。
- chrome扩展更改主机/域警告
- Javascript:使用绝对路径设置img src
- 如何在d3.js中返回路径的y坐标
- 复制图像路径以单击它
- 从模块内部访问Express装载路径
- JS文件的路径正在消失
- 使用onclick绘制SVG路径
- jpm的默认Firefox路径没有'不起作用
- 如何使用jquery将base64图像路径转换为真实路径
- 可以用'吗/'在相对路径中
- Canvas+svg路径动画,在路径中的特定点暂停一段时间,然后继续
- 将Windows文件路径组织到文件夹中
- 本地主机Typekit JS
- Ajax URL路径未替换当前URL
- 奇怪的 img src 路径,在本地主机上不起作用
- 如何将 window.location 设置为特定路径(没有主机)
- jQuery路径点在本地主机上不工作
- Windows脚本主机查找/运行程序的变量路径使用正则表达式
- Base64编码图像主机url或服务器文件路径
- 指定多站点web服务器和本地主机上的相对路径