2008-10-22 46 views

回答

3

您可以做的另一件事是通過內容頁面本身引用母版頁。

爲了讓我自己更輕鬆,我的母版頁本身創造一個公開訪問的方法:

Public Sub SetNavigationPage(ByVal LinkName As String) 
    DirectCast(Me.FindControl(MenuName), HyperLink).NavigateUrl = "help.aspx#" & LinkName 
End Sub 

然後在內容頁,我通過以下獲得母版頁的參考...

Dim myMaster As MasterPageClass = DirectCast(Me.Master, MasterPageClass) 
myMaster.SetNavigationPage("CurrentPage") 
1

我已經在三個多月的時間裏沒有寫過一行c#,但是您可以在masterpage(OnLoad)中掛接一個事件並從那裏設置鏈接。查看ContentPlaceholder的主要頁面中的內容並獲取其類型或名稱,然後將其應用於鏈接。

1

我會使用「Request.PhysicalPath」來獲取請求的物理路徑,然後在您的幫助HMTL中,您可以通過他們關於什麼頁面來表示這些部分。

你可能會去儘量使用:

Path.GetFileName(Request.PhysicalPath).ToUpper() 

數據標準化的。使用PhysicalPath將允許您擁有母版頁中的所有邏輯;這將消除在所有內容頁面中編寫代碼的需要。只是我的偏好。

+0

這很不錯(我會選擇ToLower()),但它不會給你訪問該頁面或它的屬性等只是一個文件名,很可能與類名相同(在99.99 %的情況下可能) – Kris 2008-10-22 20:32:48

+0

我不認爲你需要任何訪問頁面的屬性,我喜歡他的是你會寫在母版頁的邏輯,然後任何使用該主頁的頁面將獲得此功能。您不必在每個內容頁面中放置邏輯。 – JPrescottSanders 2008-10-22 20:43:41

1

<a href="help.aspx#<%= Path.GetFileName(this.Page.Request.FilePath) %>">Help</a> 

到母版,然後錨固在幫助頁面上格式:

<a name="page1.aspx" />Blah, blah 
<a name="page2.aspx" />Blah, blah 

如果重複子頁面的名稱,例如,Sub1的/ page1.aspx這個和分公司2/page1.aspx這個 - 你必須要稍微更聰明。