And*_*ers 8 navigation asp.net master-pages
当我在使用MasterPages的网站上导航时,应用程序是否知道我在哪个页面?如果是这样,它是否存储在我可以访问的对象中?
我问的原因是我可以替换这个:
//masterpage
<div id="nav_main">
<ul><asp:ContentPlaceHolder ID="navigation" runat="server">
</asp:ContentPlaceHolder></ul>
</div>
//content page(s)
<asp:Content ContentPlaceHolderID="navigation" ID="theNav" runat="server">
<li><a href="default.aspx">Home</a></li>
<li id="current"><a href="faq.aspx">FAQ</a></li>
<li><a href="videos.aspx">Videos</a></li>
<li><a href="#">Button 4</a></li>
<li><a href="#">Button 5</a></li>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
使用更优雅的导航解决方案,通过将列表项的ID设置为"当前"来突出显示页面的链接.目前,每个页面都会重新创建导航,并将其相应链接的ID设置为当前.
Blu*_*mer 16
我同意克里斯:使用一个控件来处理这个菜单的显示,并让它知道应该突出显示的链接.这是我经常使用的方法.如果您有多个页面需要相同的链接样式,但是您可以理解,这可能会变得更加复杂.
Dim thisURL As String = Request.Url.Segments(Request.Url.Segments.Count - 1)
Select Cast thisUrl
Case "MenuItem1.aspx"
lnkMenu1.CssClass = "Current"
Case "MenuItem2.aspx"
lnkMenu2.CssClass = "Current"
End Select
Run Code Online (Sandbox Code Playgroud)
要从母版页中获取当前请求URL,您将执行以下操作:
string s = this.Page.Request.FilePath; // "/Default.aspx"
Run Code Online (Sandbox Code Playgroud)
我还建议您将导航移动到母版页而不是内容页.这将使维护/访问更容易.