代码在页面加载事件上绑定:
Menu menu = (Menu)Page.Master.FindControl("NavigationMenuAdmin");
if (menu != null)
{
MenuItemtext = menu.SelectedItem.Text;
Response.Write("Selected Item is: " + MenuItemtext);
}
但是给出了错误:
对象引用未设置为对象的实例。
<asp:Menu ID="NavigationMenuAdmin" runat="server" EnableViewState="false"
IncludeStyleBlock="false" Orientation="Horizontal"
CssClass="navbar"
StaticMenuStyle-CssClass="nav"
StaticSelectedStyle-CssClass="active"
DynamicMenuStyle-CssClass="dropdown-menu">
<Items>
<asp:MenuItem Text="Home"></asp:MenuItem>
<asp:MenuItem Text="Candidate">
<asp:MenuItem Text="GetList" NavigateUrl="~/LookupHandler.aspx" />
<asp:MenuItem Text="AddNew" NavigateUrl="~/LookupHandler.aspx" />
<asp:MenuItem Text="Update" NavigateUrl="~/LookupHandler.aspx" />
</asp:MenuItem>
<asp:MenuItem Text="Master">
<asp:MenuItem Text="GetList" NavigateUrl="~/LookupHandler.aspx" />
<asp:MenuItem Text="AddNew" NavigateUrl="~/LookupHandler.aspx" />
</asp:MenuItem>
</Items>
</asp:Menu>
答案 0 :(得分:1)
请检查名为&#34; MenuItemtext&#34;的变量。在行之前声明。
MenuItemText = menu.SelectedItem.Text;
这可能是它向您显示此错误的原因。
&#34;对象引用未设置为对象的实例。&#34; - 未声明变量或对象并在运行时使用时显示此错误。
尝试此代码:
protected void Page_Load(object sender, EventArgs e)
{
Menu Menu = (Menu)Page.Master.FindControl("NavigationMenuAdmin");
Menu.MenuItemClick +=Menu_MenuItemClick;
}
void Menu_MenuItemClick(object sender, MenuEventArgs Events)
{
Menu Menu = (Menu)sender;
MenuItem selectedItem = Menu.SelectedItem;
Response.Write("Selected Item is: " + Menu.SelectedItem.Text + ".");
}
您只需在PageLoad中绑定菜单点击事件,然后在MenuItemClick EventHandler中处理点击的项目。
答案 1 :(得分:0)
您需要查看菜单项是否为空
MenuItem selectedItem = menu.SelectedItem;
if (selectedItem != null)
{
}