運用母版頁時的鏈結問題

2022-07-20 05:33:10 字數 1762 閱讀 7875

在母版頁中使用相對url必須十分小心,例如在母版頁中新增和鏈結時。根據所使用的是html標籤還是asp.net控制項,相對url就會有不同的解析方式。

如果使用asp.net控制項,相對url會解析為相對於母版頁的url。以下的**用來在母版頁中新增asp.net image控制項:

 

控制項的imageurl屬性值是乙個相對url。如果母版頁是在名為masterpages的資料夾中,這個url就會解析為:

/masterpages/picture.gif 

即使內容頁在乙個完全不同的資料夾中,imageurl屬性仍然會解析為相對於母版頁的url而不是相對於內容頁的url。

如果使用html標籤,情況就完全不同。如果在

或之類的html標籤中使用相對url,這個相對url會解析為相對內容頁的url。以下的**用來在母版頁中新增

標籤:

src屬性值是乙個相對url,這個url會解析為相對內容頁的url。開啟contentpages資料夾中的內容頁時,這個相對url會解析為:

/contentpages/picture.gif
在html元素中使用相對url是非常麻煩的,因為每乙個內容頁的相對url都可能不同。如果開啟不同資料夾中的內容頁,就會改變相對url。有4種方法可以解決這個問題。

第一種方法,用asp.net控制項來替換所有使用相對url的html元素。asp.net控制項可以把相對url重新解析為相對母版頁的url。

註解在母版頁中,asp.net控制項所使用的相對url會自動重新解析為相對母版頁的url。這種解析方式稱為重定向(rebasing)。只有包含urlproperty屬性的asp.net控制項屬性才能被重定向。

(在**的應用中,通常我們使用"/"來表示根目錄,/img/photo.jpg就表示photo.jpg檔案在這個**的根目錄上的img目錄裡。但是這樣使用對於初學者來說是具有風險性的,因為要知道這裡所指的根目錄並不是你的**的根目錄,而是你的**所在的伺服器的根目錄,因此當**的根目錄與伺服器根目錄不同時,就會發生錯誤。)

第三種方法,使用page.resolve url()方法將應用的相對url轉換成絕對url。">首頁

其中resolveurl("index.aspx") 相當於「在**根目錄中查詢網頁index.aspx」。

在母版頁的主體中使用

標籤和page.resolveurl()方法來顯示乙個站點的logo。 masterpages\imagemaster.master

母版頁儲存在名為masterpages的資料夾中。這個資料夾也包含乙個名為logo.gif的。這個使用以下的html標籤顯示:

' alt="website logo" /> 

page.resolveurl()方法會將~符號轉換成當前應用程式目錄的正確路徑。

'>

註解:resolveurl("index.aspx")是從根目錄出開始找,page.resolveurl("index.aspx")是在當前頁面所在資料夾找,要從根目錄找科在前面加"~/",如:page.resolveurl("~/masterpages/logo.gif")

第四種方法,所有使用相對url的html元素加上runat="server"轉換為伺服器控制項,伺服器會自動判斷路徑,比如:

/>

子目錄下的母版頁 巢狀目錄外的母版頁的問題

msdn上的解釋 asp.net 無法修改不是伺服器控制項的元素上的 url。例如,如果在母版頁上使用乙個 img 元素並將其 src 屬性設定為乙個 url,則 asp.net 不會修改該 url。在這種情況下,url 會在內容頁的上下文中進行解析並建立相應的 url。一般說來,在母版頁上使用元素...

母版頁判斷登陸 及 母版頁與內容頁的執行順序

轉 public static void check page apage 在母版頁裡呼叫的正確方法 protected void page init object sender,eventargs e 原因 母版頁和內容頁的執行順序 1.母版頁中控制項的init 2.內容頁控制項的init 3.母...

母版頁判斷登陸 及 母版頁與內容頁的執行順序

在checklogin.cs裡有check方法 public static void check page apage 在母版頁裡呼叫的正確方法 protected void page init object sender,eventargs e 原因 母版頁和內容頁的執行順序 1.母版頁中控制項的...