在網(wǎng)頁(yè)中的引用(比如引用css,js,img等對象),總的來(lái)說(shuō)可以分為以下幾種方式
view sourceprint?<%--第一種方法--%>
<link href="/site.css" rel="stylesheet" type="text/css" />
<%--第二種方法--%>
<link href="site.css" rel="stylesheet" type="text/css" />
<%--第三種方法--%>
<link href="../site.css" rel="stylesheet" type="text/css" />
<%--第四種方法--%>
<link href="<%=ResolveUrl("~/site.css")%>" rel="stylesheet" type="text/css" />
下面,我在分析一下這四種方法的優(yōu)缺點(diǎn)
方法一: /url
用法:
這個(gè)是從域名頂部開(kāi)始查找文件
如果你的頁(yè)面是:http://dozer.cnblogs.com/article/1.aspx
引用的css文件時(shí):/css/site.css
最后的css路徑就是:http://dozer.cnblogs.com/css/site.css
也就是說(shuō),它會(huì )忽略 http://dozer.cnblogs.com 后面的所有東西,然后加上自身
局限性:
如果你的網(wǎng)站是一個(gè)子網(wǎng)站,比如在IIS下的一個(gè)網(wǎng)站中建立應用程序(而不是直接建立一個(gè)網(wǎng)站)
那么你網(wǎng)站的根目錄就會(huì )是:http://www.test.com/website
問(wèn)題來(lái)了,因為引用都是根據url來(lái)判斷的,它根本無(wú)法區別你網(wǎng)站的根目錄是什么,所以解析出來(lái)的地址也會(huì )錯誤,會(huì )把"website"都忽略掉
方法二: url
用法:
這個(gè)是相對的路徑
如果你的頁(yè)面是:http://dozer.cnblogs.com/article/1.aspx
引用的css文件時(shí):css/site.css
最后的css路徑就是:http://dozer.cnblogs.com/article/css/site.css
也就是說(shuō),它會(huì )去除最后一個(gè)"/"后的東西,然后加生自身
局限性:
這個(gè)的局限性有2個(gè):
第一:如果你在masterpage中做了一個(gè)引用,但是內容頁(yè)卻在不同的文件夾,最后的引用是根據內容頁(yè)來(lái)判斷的,所以就出錯了。
第二:如果你用了UrlRewrite,那url和實(shí)際文件系統是不同的,那很明顯也會(huì )出錯。
方法三: ../url
用法:
其實(shí)這個(gè)和方法二一樣,../ 是返回上一級的意思
如果你的頁(yè)面是:http://dozer.cnblogs.com/article/1.aspx
引用的css文件時(shí):../css/site.css
最后的css路徑就是:http://dozer.cnblogs.com/css/site.css
局限性:
局限性和方法二一樣
另外,IIS默認不允許用 ../ 來(lái)返回父級,所以要配置一下
方法四: <%=ResolveUrl("~/site.css")%>
用法:
這個(gè)用法和方法一差不多,但是有個(gè)好處,就是可以避免方法一的局限性
因為這個(gè)是靠服務(wù)器解析出來(lái)的,而不是在客戶(hù)端執行的,所以能識別子網(wǎng)站
如果你的頁(yè)面是:http://www.cnblogs.com/dozer/article/1.aspx
引用的css文件時(shí):<%=ResolveUrl("~/site.css")%>
最后的css路徑就是:http://www.cnblogs.com/dozer/site.css
局限性:
這個(gè)方法是萬(wàn)能的,但是也不是完美的
因為要靠服務(wù)器解析,所以當然不能所見(jiàn)即所得啦,還有就是要多打那么多字,很麻煩
聯(lián)系客服