惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Attack and Defense Labs
Attack and Defense Labs
The GitHub Blog
The GitHub Blog
C
Check Point Blog
博客园_首页
MongoDB | Blog
MongoDB | Blog
N
Netflix TechBlog - Medium
F
Full Disclosure
Microsoft Security Blog
Microsoft Security Blog
爱范儿
爱范儿
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
T
Threat Research - Cisco Blogs
C
Cybersecurity and Infrastructure Security Agency CISA
V
Vulnerabilities – Threatpost
K
Kaspersky official blog
博客园 - 司徒正美
S
Schneier on Security
T
The Exploit Database - CXSecurity.com
Project Zero
Project Zero
云风的 BLOG
云风的 BLOG
Cisco Talos Blog
Cisco Talos Blog
Know Your Adversary
Know Your Adversary
雷峰网
雷峰网
V
V2EX - 技术
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Spread Privacy
Spread Privacy
罗磊的独立博客
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
S
Security Affairs
SecWiki News
SecWiki News
Schneier on Security
Schneier on Security
O
OpenAI News
Jina AI
Jina AI
PCI Perspectives
PCI Perspectives
Cyberwarzone
Cyberwarzone
Y
Y Combinator Blog
Apple Machine Learning Research
Apple Machine Learning Research
B
Blog RSS Feed
I
InfoQ
D
Docker
P
Palo Alto Networks Blog
Recorded Future
Recorded Future
M
MIT News - Artificial intelligence
博客园 - Franky
B
Blog
Scott Helme
Scott Helme
博客园 - 叶小钗
D
DataBreaches.Net

博客园 - DonLiang

有趣的排序 如何在ASP.NET2.0中通过Gmail发送邮件 C# - 函数参数的传递 使用ACE构建一个简单的客户端 【AJAX Volume2 - 02】Sys.Net.WebRequest 【AJAX Volume2 - 01】Sys.Application.notifyScriptLoaded 为VS2005安装STLport 慢性疲劳综合症的表现与干预[转] - DonLiang - 博客园 一点设想 励志生活-英国式选秀带来的启示 我是该说点什么了…… 《赢在中国》 AJAX里TabContainer的CSS 为CheckBox和DropDownList添加一个简易的JavaScript 重生 风流总被雨打风吹去..... ASP.NET里的路径的使用-预备篇 MYSQL中的LAST_INSERT_ID()和MSSQL中的@@IDENTITY 一线曙光
ASP.NET里的路径的使用-客户端标记
DonLiang · 2007-04-10 · via 博客园 - DonLiang

      使用客户端标记<img>来说明一下绝对路径和相对路径的使用。
      在VS2005里新建一个WebSite,取名为:AbsoluteAndRelativePath,呵呵,名字很长,构建了具有层次的文件夹结构,如图所示:

      其中,有些页面没有使用MasterPage,有些使用了。

      一 不使用MasterPage

         对于根目录(AbsoluteAndRelativePath)下的页面RootPage.aspx,在VS中,直接从image文件夹里把图片拖多来,得到的代码如下:
            <img src="image/root.png" />
            <img src="SubFolderOne/image/subone.png" />
            <img src="SubFolderTwo/image/subtwo.png" />
            <img src="SubFolderTwo/NestedFolder/image/nested.png" />
         这类型路径是一相对路径,其含义为:在当前的驱动盘下的当前页面(RootPage.aspx)所在的文件夹(目录)内的image文件夹(目录)里的root.png文件。另外几个类似,就不在累赘了。
         Ctrl+F5看看效果,是正常显示的,哈哈,当然正常,不正常那就太诡秘了。
         恩,接下来,让我们变换一下路径的写法:

         (1) 将其改为:src="../image/root.png",然后,运行一下,呃,结果大失所望,不显示图片。怎么一回事呢?让我们看看解析以后的地址,如下:http://localhost:3188/image/root.png
         恩,难怪不显示图片,这个路径下,根本就不存在图片嘛。让我们回头看看这个写法的意思。如果大家还记得上一讲基础知识篇的内容,那我们知道,两个点(..)符号,是取上一级目录(父目录)的,于是,我们从RootPage.aspx所在的位置出发,它在AbsoluteAndRelativePath下,则,其上一级,则到了http://localhost:3188了,如果不清除的话,让我们看看正常现实图片时候的路径,如下:
http://localhost:3188/AbsoluteAndRelativePath/image/root.png对比一下层次结构就很容易发现了。

         (2)将其改为:src=./image/root.png,然后,运行一下,嗯,有正确的图片现实。
            让我们看看这路径的含义:一个点表示当前目录,则,其意思为在RootPage.aspx所在的目录内的image目录里的root.png文件。
         
         (3)将其改为:src=".././image/root.png"
            大伙按照以上介绍的方法读读此路径,看看图片是否可以正确显示。

         (4)将其改为:src="./../image/root.png"
            同样,大伙看看此图能否正常显示。

               以上两个路径都是不能正常显示的。

         (5)将其改为:src="../AbsoluteAndRelativePath/image/root.png"
         (6)将其改为:src="../AbsoluteAndRelativePath/./image/root.png"
            大伙看看此路径能否正常显示。

         以上两个路径是可以正常显示的。

         二 使用MasterPage
         使用位于AbsoluteAndRelativePath目录下的MasterPage-(名字为:RootMasterPage.master)。我们使用最简单的效果,当一图片,默认是灰色的背景,当鼠标放上去的时候,将背景变为红色,鼠标移开,则变回灰色。
简单设置一下,如下所示:
         <img src="image/header_gray.png"
                 onmouseover="this.src='image/header_red.png'"
                 onmouseout="this.src='image/header_gray.png'"
         />
         如图:AbsoluteAndRelativePath下的RootPageRootMasterpage.aspx和SubFolderOne下的UseRootMasterpage.aspx都应用了此
MasterPage(RootMasterPage.master)。
         运行试一试,位于子文件夹里的现实不正常。恩,让我们看看原因,原来是基准位置不对,造成了在SubFolderOne文件夹里的页面,当遇到上述的相对路径的时候,得到了一个不正确的文件路径,如下:
         http://localhost:3188/AbsoluteAndRelativePath/SubFolderOne/image/root.png   
         知道了原因,那就让我们着手解决吧,于是,迅速更换了一个路径:
         src="../image/header_gray.png"
         这时,子文件夹是正常了,但是,副作用是,另外一个文件夹就不正常了,呃,没办法,只好重新写一路径:
         src="/AbsoluteAndRelativePath/image/header_gray.png"
         使用了一绝对路径,这回天下太平了,终于可以松一口气了。

         喝了一杯茶回来以后,发觉,假设将此网站发布到IIS或者其他地方会有什么情况发生呢?      
         试之。
         同时,取一个不是AbsoluteAndRelativePath的名字作为应用程序的名称,嚯嚯,这时候问题就来了,刚才设定的绝对路径,现在又开始出错了,真恼人啊。
         改来改去,都没有找到最优雅的做法,于是,用了一个下下招:
         在head标记里,使用了base节点,设定了相对路径的基准点:
         <head runat="server">
             <title>路径</title>
             <base href="http://localhost:3159/AbsoluteAndRelativePath/" />
         </head>
         然后,路径改为相对路径:
         <img src="image/header_gray.png"
                 onmouseover="this.src='image/header_red.png'"
                 onmouseout="this.src='image/header_gray.png'"
         />
         然后,发布网站的时候,将此路径修改,哎,也不失为没办法中的办法啊