ASP.NET:关于引用路径的问题

时间:2010-08-26 10:58:26

标签: asp.net

这是我的项目中在2-3个不同文件中引用相同图像的三种方式:

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

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

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

我对这种相对的绝对路径感到有点困惑。如何以这样的方式引用此图像:无论图像位于何处,它始终显示并且永不丢失。以上三种参考方式中的哪一种方法才能实现我的目标?或者是否有其他方式来引用图像?

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

上述代码行究竟是什么意思?比如,Constants.URL是什么?什么是“〜”和“......”在做什么?

这是在其中一个页面中使用图像的位置。当我将其更改为“../ ..”时,图像显示出来,之前不是。

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

1 个答案:

答案 0 :(得分: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,那么您图片的手工编码网址将为(/Images/Docs/Plan/myImage.jpg),因为您现在位于网站的根目录。

如果您在SomeFolder中,则图片的手动编码网址为(../Images/Docs/Plan/myImage.jpg),因为您必须上 1 目录才能访问您网站的根目录图像目录位于。

如果您使用的是SomeFolderSubFolder,那么图片的手工编码网址将为(../../Images/Docs/Plan/myImage.jpg) - 因为您需要上 2 目录才能到达您网站的根目录你的图片文件夹是。

现在,通过使用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);}