1.母板中的路径问题

如果你使用了母板,同时母板里面又使用了和“路径”有关的标签,比如

头部:

<script type="text/javascript" src="scripts/jquery.js"></script>

<link type="text/css" rel="stylesheet" href="styles/common.css" />

body:

<img src="p_w_picpaths/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="~/p_w_picpaths/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="../p_w_picpaths/logo.png" alt="****有限公司" runat="server" />

<img src="../p_w_picpaths/logo.png" alt="****有限公司"/>

这两个里面的"../"呢?

 

答案是:runat的那个服务器控件对项目而言的相对路径,下面那个是死的,对各自的aspx文件而已,实际中谨慎使用。

总之,我们应该养成母板里用到路径时而立马想到上面的灵活方式,考虑是用服务器控件还是方法解析。