ASP.NET MasterPage 中圖片路徑的解決辦法!
一般而言,鏈接路徑的表達(dá)有三種方式:絕對(duì)路徑、相對(duì)路徑和基于根目錄的路徑。另外對(duì)于ASP.NET服務(wù)器控件來(lái)說(shuō),還可以使用“~”來(lái)代替根目錄來(lái)表示。
在MasterPage和用戶控件中,經(jīng)常要使用一些圖片作為背景或漂亮的按鈕,但是在指定圖片的src或者background時(shí)候,經(jīng)常因?yàn)殒溄勇窂降膯?wèn)題而出錯(cuò)。
1.使用絕對(duì)路徑:使用形如“D:\xxx\xxx.gif”的絕對(duì)文件路徑一般情況下是不可取的。可以考慮采取url的方法,寫(xiě)成http://xxxx/xx/xxx.gif”。但是缺點(diǎn)是不利于移植,例如現(xiàn)在站點(diǎn)的地址為http://www.xxx.net,如果有一天站點(diǎn)更該http://www.xxx.com,則所有的鏈接地址都失效,需要進(jìn)行更改,難以維護(hù)。
2.使用相對(duì)路徑:使用相對(duì)于頁(yè)面位置的路徑,比如“..\images\xxx.gif”,這樣MasterPage和用戶控件中都能正確顯示,但是如果將繼承MasterPage的頁(yè)面放到不同的文件夾下,或者使用用戶控件的頁(yè)面不在同一文件夾,那么該頁(yè)面又會(huì)找不到正確的圖片位置了!
3.基于根目錄的路徑:形如:<a href="/xxx/xxx.gif">這樣的解決方法在ASP.NET2.0調(diào)試的時(shí)候,因?yàn)闆](méi)有建立虛擬目錄,并不能正確顯示(我也不是很肯定,沒(méi)有確認(rèn)^_^)。而我在非服務(wù)器控件的HTML標(biāo)簽元素上無(wú)法使用“~”來(lái)指定路徑。
那么,在設(shè)計(jì)時(shí)讓圖片可見(jiàn),我們應(yīng)該怎么來(lái)處理呢?我采用了CSS來(lái)完成這項(xiàng)工作。針對(duì)要顯示圖片的元素和控件,我們可以寫(xiě)一段簡(jiǎn)單的css來(lái)定位圖片,因?yàn)閏ss文件的位置是一般不會(huì)改變的(位于App_Theme/themename/xxx.css),這種方法也就行之有效了。
接下來(lái)我們只需要在相應(yīng)的元素和控件的cssclass中填入HideBar,就可以做到每個(gè)繼承MasterPage或使用用戶控件的頁(yè)面都能正確顯示圖片了。
我想應(yīng)該還有其它更好的辦法,也希望有人能指點(diǎn)一二。
在MasterPage和用戶控件中,經(jīng)常要使用一些圖片作為背景或漂亮的按鈕,但是在指定圖片的src或者background時(shí)候,經(jīng)常因?yàn)殒溄勇窂降膯?wèn)題而出錯(cuò)。
1.使用絕對(duì)路徑:使用形如“D:\xxx\xxx.gif”的絕對(duì)文件路徑一般情況下是不可取的。可以考慮采取url的方法,寫(xiě)成http://xxxx/xx/xxx.gif”。但是缺點(diǎn)是不利于移植,例如現(xiàn)在站點(diǎn)的地址為http://www.xxx.net,如果有一天站點(diǎn)更該http://www.xxx.com,則所有的鏈接地址都失效,需要進(jìn)行更改,難以維護(hù)。
2.使用相對(duì)路徑:使用相對(duì)于頁(yè)面位置的路徑,比如“..\images\xxx.gif”,這樣MasterPage和用戶控件中都能正確顯示,但是如果將繼承MasterPage的頁(yè)面放到不同的文件夾下,或者使用用戶控件的頁(yè)面不在同一文件夾,那么該頁(yè)面又會(huì)找不到正確的圖片位置了!
3.基于根目錄的路徑:形如:<a href="/xxx/xxx.gif">這樣的解決方法在ASP.NET2.0調(diào)試的時(shí)候,因?yàn)闆](méi)有建立虛擬目錄,并不能正確顯示(我也不是很肯定,沒(méi)有確認(rèn)^_^)。而我在非服務(wù)器控件的HTML標(biāo)簽元素上無(wú)法使用“~”來(lái)指定路徑。
那么,在設(shè)計(jì)時(shí)讓圖片可見(jiàn),我們應(yīng)該怎么來(lái)處理呢?我采用了CSS來(lái)完成這項(xiàng)工作。針對(duì)要顯示圖片的元素和控件,我們可以寫(xiě)一段簡(jiǎn)單的css來(lái)定位圖片,因?yàn)閏ss文件的位置是一般不會(huì)改變的(位于App_Theme/themename/xxx.css),這種方法也就行之有效了。
接下來(lái)我們只需要在相應(yīng)的元素和控件的cssclass中填入HideBar,就可以做到每個(gè)繼承MasterPage或使用用戶控件的頁(yè)面都能正確顯示圖片了。
我想應(yīng)該還有其它更好的辦法,也希望有人能指點(diǎn)一二。







我來(lái)自:向東博客
0
0
0(請(qǐng)您對(duì)文章做出評(píng)價(jià))