2014-01-14 32 views
0

在我的母版頁(我們將其命名爲MasterPage1)我有菜單控制ASP.NET菜單控制 - 獲取選定項目後重定向

<asp:Menu ID="Menu1" runat="server" Orientation="Horizontal"> 
    <Items> 
     <asp:MenuItem NavigateUrl="~/" Text="tab1"></asp:MenuItem> 
     <asp:MenuItem NavigateUrl="~/page1.aspx" Text="tab2"></asp:MenuItem> 
     <asp:MenuItem NavigateUrl="~/page1.aspx" Text="tab3"></asp:MenuItem> 
    </Items> 
</asp:Menu> 

page1.aspx具有相同的母版頁MasterPage1。如果我點擊tab2tab3我必須知道哪一個選擇

protected void Page_Load(object sender, EventArgs e) 
{ 
    //get Menu control reference from master page 
    //get selected item 
} 

,但我看到的總是tab1選擇。我究竟做錯了什麼 ?

+2

你可以添加一個查詢字符串嗎?即''NavigateUrl =「〜/ page1.asp?tab = 2」' – freefaller

+0

是的,查詢字符串可以工作,或者如果你不希望用戶看到他們選擇/手動更改它的選項卡,你可以將它存儲在會話內存 –

+0

我可以,但我不想要(我真的不喜歡查詢字符串) – Tony

回答

2

當您使用由ASP.Net菜單創建的<a href="url">導航時,無法將信息存儲在會話/視圖狀態/隱藏中,因爲它會發出新的GET請求並加載頁面。

追加查詢字符串的URL像NavigateUrl="~/page1.aspx?selected=tab1"

0

此項添加到通過重定向打開的頁面的頁面加載事件。

protected void Page_Load(object sender, EventArgs e) 
{ 
    if (!IsPostBack) 
    { 
     Menu Menu = (Menu)Page.Master.FindControl("Menu1"); 
     if (Menu.Items.Count > 0) 
     { 
      foreach (MenuItem mi in Menu.Items) 
      { 
       if (mi.Text == "Contact Us") 
       { 
        mi.Selected = true; 
       } 
      } 
     } 

    } 
}