1.母板中的路径问题
如果你使用了母板,同时母板里面又使用了和“路径”有关的标签,比如
头部:
<script type="text/javascript" src="scripts/jquery.js"></script>
<link type="text/css" rel="stylesheet" href="styles/common.css" />
body:
<img src="images/logo.png" alt="****有限公司" />
<a href="about/index.aspx">关于本站</a>
这时候你要注意了,你得看看你的aspx文件层次是否对应到母板里的路径结构,比如aspx存在不同的目录嵌套:
如:
根:default.aspx
下级:
根/about/default.aspx
根/job/list.aspx
。。。。
这种情况要求你的母板里路径不能是死的。
那么怎么办呢?
大家知道有个~/指的就是项目的跟路径位置,
但是需要服务端控件支持,而我们的<a>,<img>这里不是服务器控件,好在有个runat="server"能够转化。
于是
<img src="~/images/logo.png" alt="****有限公司" runat="server" />
<a href="~/about/index.aspx" runat="server">关于本站</a>
这是绝对路径方式,当然也可以用../的相对路径方式。
但是要注意服务端控件的相对路径方式相对项目本身而言的!!这样不必你关心将来的部署,只管好项目的目录层次就OK了。
你也可以用<asp:***>的服务器控件。
如果不想用服务器控件,也有个办法解析"~/"的,那就是Page.ResolveUrl()和Page.ResolveClientUrl()
区别是ResolveUrl解析为跟路径方式/aaa/bb/aa/**
如果网站或者测试开发中一般都是在虚拟目录里工作,所以这里不用这个版本。
下面代码:
<link type="text/css" rel="stylesheet" href="<%=Page.ResolveClientUrl("~/") %>styles/common.css" />
<script type="text/javascript" src="<%=Page.ResolveClientUrl("../") %>scripts/jquery.js"></script>
这个是../呵呵。
我问个问题,这里的"../"是相对于生成的aspx页面,还是当前这个母板文件?
答案是:相对于母板这个文件,因为这个是对应项目而言的相对路径。
<img src="../images/logo.png" alt="****有限公司" runat="server" />
<img src="../images/logo.png" alt="****有限公司"/>
这两个里面的"../"呢?
答案是:runat的那个服务器控件对项目而言的相对路径,下面那个是死的,对各自的aspx文件而已,实际中谨慎使用。
总之,我们应该养成母板里用到路径时而立马想到上面的灵活方式,考虑是用服务器控件还是方法解析。
本文转自 xcf007 51CTO博客,原文链接:http://blog.51cto.com/xcf007/473621,如需转载请自行联系原作者