Asp.net
MasterPage 是否知道正在顯示的頁面?
當我在使用 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>使用更優雅的導航解決方案,通過將列表項的 ID 設置為“目前”來突出顯示頁面連結。目前,每個頁面都重新創建導航,並將其各自連結的 ID 設置為目前。
我同意 Chris:使用控制項來處理此菜單的顯示,並使其知道應該突出顯示哪些連結。這是我經常使用的一種方法。如果您有多個頁面需要不同樣式的相同連結,它可能會變得更加複雜,但您明白了。
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
要從母版頁中獲取目前請求 URL,您將執行以下操作:
string s = this.Page.Request.FilePath; // "/Default.aspx"我還建議將您的導航移動到母版頁而不是內容頁。這將使維護/訪問變得更容易。