Asp.net

MasterPage 是否知道正在顯示的頁面?

  • June 7, 2018

當我在使用 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"

我還建議將您的導航移動到母版頁而不是內容頁。這將使維護/訪問變得更容易。

引用自:https://stackoverflow.com/questions/189062