从内容页面的母版页中获取所选菜单项?

时间:2015-03-24 13:17:57

标签: c# asp.net

代码在页面加载事件上绑定:

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>

2 个答案:

答案 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)
{
}