在我的母版页中(我们将其命名为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
。如果我点击tab2
和tab3
,我必须知道选择了哪一个
protected void Page_Load(object sender, EventArgs e)
{
//get Menu control reference from master page
//get selected item
}
但我总是看到tab1
已被选中。我做错了什么?
答案 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;
}
}
}
}
}