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