从代码隐藏中的asp.net菜单控件获取所选项目
在背面的帖子中,我似乎无法从母版页的菜单控件中获取所选菜单项。我在page_load中尝试了以下操作,但不起作用,错误为“对象引用未设置为对象的实例” 母版页中的Html从代码隐藏中的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
<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" />