2010-08-26 63 views
0

这些都是三种方式相同的图像已经在2-3个不同的文件被引用到我的项目:ASP.NET:关于引用路径问题

url(<% =QDAAB.Constants.SiteURL %>images/Docs/Plan/myImage.jpg) 

url(~/images/Docs/Plan/myImage.jpg); 

url(../images/Docs/Plan/myImage.jpg); 

我有点困惑这个相对,绝对路径thingy。我如何以这样一种方式来引用这个图像:无论图像在哪个文件夹中,它总是被显示并且永不丢失。以上三种参考方式中的哪一种是正确的,以实现我想要的?或者还有另一种方式来引用图像?

希望问题清楚。 我是.NET的初学者,刚开始尝试一些东西。

上面的代码行究竟是什么意思?像,这是什么Constants.URL?什么是“〜”和“..”在做什么?

以下是在其中一页中使用图像的位置。当我将其更改为“../ ..”时,显示的图像早些时候没有显示。

<td align="center" style="background-image: url(../../images/Docs/Plans/myImage.jpg); 

回答

2

这些都不会“奇迹般地”找到您的图像,无论在图像所在的文件夹中。您将始终必须在链接中为图像提供一部分路径才能呈现该图像。

但是,在这三个中,我会推荐第二行url(~/images/Docs/Plan/myImage.jpg);作为完成您需要做的事情的最佳方式。

.NET中的'〜'是框架的一个特殊字符,可以在站点的根目录处启动您的路径。它基本上说,无论网站内的请求来自哪个目录,都转到根目录并从那里开始你的路径。

'../'是标准的HTML语法,意思是上一个目录,然后开始寻找你的路径。

例如,假设您的网站位于www.domain.com。这里是你的文件夹结构

Images 
    Docs 
    Plan 
CSS 
Admin 
SomeFolder 
    SomeFolderSubFolder 
Default.aspx (your default document when you get to your site) 

例子

如果你是Default.aspx中,然后手工编码的URL到你的图像会作为(/Images/Docs/Plan/myImage.jpg)你在你的网站在根这点。

如果你在SomeFolder,然后手工编码的URL到你的图像会(../Images/Docs/Plan/myImage.jpg),因为你必须要上去目录去哪里Images目录位于你的站点的根目录。

如果你在SomeFolderSubFolder,然后手工编码的URL到你的图像会(../../Images/Docs/Plan/myImage.jpg) - 因为你需要上去目录到你的网站,你的图片文件夹的根目录。

现在,通过使用url(~/images/Docs/Plan/myImage.jpg);方法,您不必担心知道您的网站有多少深度,它始终会从网站根目录开始查找。上面这些代码中的每一个代码都会用这行代码来正确渲染图像。

编辑

好了,你在网上的风格尝试这一点。你可能/应该能够做到这一点:

<td align="center" style="background-image: url(<%= Server.MapPath("~/images/Docs/Plans/myImage.jpg") %>);></td> 

或者,有什么错用../方法,你只需要记住,你是在你的文件夹结构。最后,如果您要在样式表中声明此样式而不是内联,则图片与页面相关的位置无关紧要,就像它们与样式表FYI相关的位置。

<td align="center" class="tdWithImages"></td> 

styles.css的

#tdWithImages{background-image: url(../Images/Docs/Plan/myImage.jpg);} 
+0

“〜/” 不working..when我用this..image vanished..when我用 “../../” 图像出现。 在我上面写的第一行代码中,还有什么是“Constants.SiteURL”的含义? – Serenity 2010-08-26 11:44:34

+0

该行看起来像在代码中设置的静态变量,该代码提供站点根的完整路径。我会认为它看起来像siteURL =“http://www.yoursite/com”。如果你曾经移动你的网站,你将不得不改变这个变量并重新编译。至于上述不工作,你可以发布你的完整代码,你如何使用它? URL()来自哪里?你是否用引号(“)包围路径? – Tommy 2010-08-26 11:52:38

+0

已添加详细信息 – Serenity 2010-08-26 12:00:16