ASP.NET菜单控件 - 重定向后获取所选项目

时间:2014-01-14 10:25:49

标签: c# asp.net

在我的母版页中(我们将其命名为MasterPage1)我有菜单控件

<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已被选中。我做错了什么?

3 个答案:

答案 0 :(得分:2)

使用ASP.Net菜单创建的<a href="url">进行导航时,无法将信息存储在session / viewstate / hidden中,因为它会发出新的GET请求并加载页面。

将查询字符串附加到网址中,如NavigateUrl="~/page1.aspx?selected=tab1"

答案 1 :(得分:0)

只需使用MenuItemClick事件即可获取当前项目并尝试将其存储到会话中并在重定向后使用。欲了解更多信息,请访问

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.menuitemclick(v=vs.110).aspx

答案 2 :(得分: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;
                }
            }
        }

    }
}