Asp.Net在頁面設計上如果用的Master模板最怕的就是圖片的路徑,不同深度引用總會出現圖片消失等問題!一些控制項的使用也會出現同等的問題。於是想來想去,終於想到了一個方法。
對於圖片,我們可以在後台定義一個路徑,路徑的格式為"~/image/test.jpg"然後前台引用。
注意:“~”只可以在服務端使用。
例如:
text.aspx.cs裡面
public string imgpath="~/image/test.jpg";
text.aspx裡面
<asp:Image ID="Image1" runat="server" ImageUrl='<%= imgpath%>' />
如果是div或者其他什麼的背景:
我們可以在更目錄下建一個App_Themes檔案夾,然後把自己寫的css放在裡面,圖片相對與該檔案就好。
以後在不同的地方都載入該css就可以了。
PS:提到路徑我就在多一句,對於控制項的使用,起cs裡面的路徑是相對於控制項所在的檔案夾,而不是使用該控制項的頁面所在的檔案夾
比如,控制項1後台有個Image1.ImageUrl="images/test.jpg",控制項1在“include”檔案夾,而使用該控制項的頁面在根目錄下,那圖片的路徑指在include/images.test.jpg,而不是根目錄的images.test.jpg
補充:(補充內容來自“卑微的程式員”http://jy147154.bokee.com/view.b?diaryId=16134580)
.asax 的路徑問題就如同 ASP 的 include 進來的檔案的路徑問題一樣,兩個字:麻煩。
。aspx頁面可以這樣引用asax
<%@ register src="~/UserControls/xxx.ascx" tagname="myuc" tagprefix="uc1" %>
~/ 的意思是相對網站的虛擬根路徑
對於.asax內部的片、串連等:
如果是Web空件如,HyperLink,Image,路徑設定同上:
<asp:hyperlink navigatorurl="~/yourfolder/yourpage.aspx" runat = server />
如果是靜態HMTL的如<a/> <img/>等標記:
方法1:
加上runat=server使之成為HTML伺服器空件:
<img src="~/images/myimg.gif"/>
方法2:動態過程絕對路徑
<img src="<% =HttpContext.Current.Request.ApplicationPath %>/images/myimg.gif">
記住 ~/ 僅對 ASP.NET 的伺服器空件起作用就可以了。
1."<% =HttpContext.Current.Request.ApplicationPath %>/
2.HttpContext.Current.Request.Url.GetLeftPart(UriPartial.Authority)
3.runat=server