2008-10-22 45 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这个 - 你必须要稍微更聪明。