在帖子后面,我似乎无法从MasterPage中的菜单控件中获取所选菜单项。我在page_load中尝试了以下操作,但它不起作用并且错误输出'对象引用没有设置为对象的实例'。
MasterPage中的Html
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false"
IncludeStyleBlock="false" Orientation="Horizontal">
<Items>
<asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home" />
<asp:MenuItem NavigateUrl="~/About.aspx" Text="About" />
<asp:MenuItem NavigateUrl="~/Contact.aspx" Text="Contact" />
</Items>
</asp:Menu>
MasterPage中的Page_Load
If IsPostBack Then
Select Case NavigationMenu.SelectedItem.Text
Case "Home"
'code
Case "About"
'code
Case "Contact"
'code
End Select
End If
答案 0 :(得分:2)
尝试将代码置于page_load中的if(!IsPostBack){// Code here}中。
答案 1 :(得分:1)
您可以使用MenuItemClick事件。如果NavigateUrl属性为null“”,则单击事件将触发,如果您有“#”或其他页面的URL,则click事件不起作用。 Reference article
Protected Sub NavigationMenu_MenuItemClick(sender As Object, e As System.Web.UI.WebControls.MenuEventArgs) Handles NavigationMenu.MenuItemClick
Select Case e.Item.Text
Case "Home"
'code
Case "About"
'code
Case "Contact"
'code
End Select
End Sub
活动将开始......
<asp:MenuItem NavigateUrl="" Text="Home" />
事件不会发生......
<asp:MenuItem NavigateUrl="~/About.aspx" Text="About" />
注意: 我最终使用无序列表而不是Javascript回发到服务器端事件。 asp.net MenuControl对我的情况不够灵活。