从代码隐藏中的asp.net菜单控件获取所选项目

从代码隐藏中的asp.net菜单控件获取所选项目,asp.net,web-applications,Asp.net,Web Applications,在背面的帖子中,我似乎无法从母版页的菜单控件中获取所选菜单项。我在page_load中尝试了以下操作,但不起作用,错误为“对象引用未设置为对象的实例” 母版页中的Html <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal"> <Ite

在背面的帖子中,我似乎无法从母版页的菜单控件中获取所选菜单项。我在page_load中尝试了以下操作,但不起作用,错误为“对象引用未设置为对象的实例”

母版页中的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>
 If IsPostBack Then
   Select Case NavigationMenu.SelectedItem.Text
        Case "Home"
            'code
        Case "About"
            'code
        Case "Contact"
            'code
   End Select
End If

如果加载页面中的(!IsPostBack){//code here},请尝试将代码放入其中。

您可以使用MenuItemClick事件。如果NavigateUrl属性为null“”,则会触发单击事件,如果您有“#”或指向其他页面的url,则单击事件不起作用

事件将被触发

<asp:MenuItem NavigateUrl="" Text="Home" />

事件不会触发

<asp:MenuItem NavigateUrl="~/About.aspx" Text="About" />

注:
我最终使用了一个无序列表,而不是Javascript回发到服务器端事件。asp.net MenuControl对于我的情况不够灵活。

在母版页代码中,它从不经过回发。我更新了代码。在NavigationMenu.SelectedItem中,它将删除每次回发时的值。确保其值未在NavigationMenu上擦除。请通过在加载页面中的if(!IsPostBack)中绑定NavigationMenu值来选择EdItem。我不确定在设计时完成值而不是数据绑定时为什么要绑定项。
<asp:MenuItem NavigateUrl="~/About.aspx" Text="About" />