2011-04-20 35 views
0

我的工作在網站上,目前有一個用戶控件設置爲顯示導航選擇主動導航在ASP.NET

<div class="navigation"> 
     <ul> 
      <li><asp:HyperLink runat="server" ID="home" Text="Home" NavigateUrl="/Default.aspx" /></li> 
      <li><asp:HyperLink runat="server" ID="about" Text="About Us" NavigateUrl="/AboutUs.aspx" /></li> 
      <li><asp:HyperLink runat="server" ID="experience" Text="Experience" NavigateUrl="/Experience.aspx" /></li> 
      <li><asp:HyperLink runat="server" ID="capabilities" Text="Capabilities" NavigateUrl="/Capabilities.aspx" /></li> 
      <li><asp:HyperLink runat="server" ID="benefits" Text="Benefits" NavigateUrl="/Benefits.aspx" /></li> 
      <li><asp:HyperLink runat="server" ID="contact" Text="Contact Us" NavigateUrl="/ContactUs.aspx" /></li> 
     </ul> 
    </div> 

我有兩個網頁調用用戶控件。 Default.aspx和Secondary.Master。我需要知道能夠在父代<li>標記或鏈接本身上添加「CssClass =」Active「的最佳方法

回答

3

考慮使用內置的ASP:菜單控件它具有內置功能來處理你正在嘗試做的事

+0

將我的建議與ataddeini的答案結合起來是一個好方法。他的鏈接提供了關於建立站點地圖並將其與.net菜單控件連接的詳細說明。使網站維護和網站導航的創建變得非常簡單。您甚至可以擴展站點地圖以進行一些真正的瘋狂定製,例如告訴.Net將某些控件包含在頁面上等。 – 2011-04-20 19:04:52

2

對於這個選項使用了一個站點地圖文件嗎?如果你這樣做,你可以利用一些內置的提供者/控件來幫助簡化事情。 - 確定導航元素是否爲當前頁面的能力

Scott Mitchell has some good tutorials關於如何利用這些功能

-1

我的用戶控件

protected void Page_Load(object sender, EventArgs e) 
    { 
     SetActiveNavLink(); 
    } 

    private void SetActiveNavLink() 
    { 
     if (HttpContext.Current.CurrentHandler.ToString().ToLower().Contains("default")) 
     { 
      home.Attributes.Add("class", "active"); 
     } 
     if (HttpContext.Current.CurrentHandler.ToString().ToLower().Contains("about")) 
     { 
      about.Attributes.Add("class", "active"); 
     } 
     if (HttpContext.Current.CurrentHandler.ToString().ToLower().Contains("experience")) 
     { 
      experience.Attributes.Add("class", "active"); 
     } 
     if (HttpContext.Current.CurrentHandler.ToString().ToLower().Contains("capabilities")) 
     { 
      capabilities.Attributes.Add("class", "active"); 
     } 
     if (HttpContext.Current.CurrentHandler.ToString().ToLower().Contains("benefits")) 
     { 
      benefits.Attributes.Add("class", "active"); 
     } 
    } 

就像一個魅力添加一些代碼後面的代碼。

+0

現在,每當您向菜單中添加新鏈接時,都要更改頁面的名稱等,這段代碼將打破。我會尋求更靈活的解決方案。 – JerSchneid 2013-01-18 00:16:09

+0

感謝一年半後 – 2013-01-18 03:10:52