asp.net母板使用注意

技術小胖子發表於2017-11-07

 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,如需轉載請自行聯絡原作者


相關文章