1

在我的 asp.net Web 应用程序中,我基于登录用户角色以编程方式创建了一个菜单和 menuItem。代码如下...

    Menu menu = new Menu();
    menu.CssClass = "menu";
    menu.IncludeStyleBlock = false;
    menu.EnableViewState = false;
    menu.Orientation = Orientation.Horizontal;

    if (roleType.equals("teacher"))
    {
        MenuItem categoryItemCh1 = new MenuItem("Home");
        categoryItemCh1.NavigateUrl = "Teacher/TestsList.aspx";
        menu.Items.Add(categoryItemCh1);

        MenuItem categoryItemCh2 = new MenuItem("Account");
        categoryItemCh2.NavigateUrl = "Account/underconstruction.aspx";
        menu.Items.Add(categoryItemCh2);

        MenuItem categoryItemCh3 = new MenuItem("Reports");
        categoryItemCh3.NavigateUrl = "Account/underconstruction.aspx";
        menu.Items.Add(categoryItemCh3);

        MenuItem categoryItemCh4 = new MenuItem("Logout");
        menu.Items.Add(categoryItemCh4);
    }

因此,当用户单击注销菜单项时,我必须触发 menuItem 单击事件来执行以下过程。

1.清除与用户关联的所有会话
2.重定向到登录页面。

但我不知道如何在 asp.net 中以编程方式添加 menuItem 点击事件。请指导我摆脱这个问题......

4

3 回答 3

2

使用MenuItemClick事件。您不会向每个菜单项添加事件,而是向菜单本身添加事件

menu.OnMenuItemClick += Menu_MenuItemClick;


void Menu_MenuItemClick(Object sender, MenuEventArgs e)
{
// Display the text of the menu item selected by the user.
Message.Text = "You selected " + 
  e.Item.Text + ".";
}

您可以使用 MenuEventArgs 来确定单击了哪个菜单项

于 2013-01-17T05:57:46.937 回答
0

要将事件处理程序添加到菜单,您需要使用菜单的 EventHandlerList 上的 AddHandler 或 AddHandlers 方法。要获取 EventHandlerList,请参阅 Menu.Events 属性。

于 2013-01-17T06:15:37.930 回答
0

这是我解决问题的方法...

    protected void RadMenu2_ItemClick(object sender, RadMenuEventArgs e)
    {

        switch (RadMenu2.SelectedItem.Text)
        {
            case "Menu Text 1":
                Your code or method;
                break;
            case "Menu Text 2":
                Your code or method;
                break;
            case "etc...":
                Your code or method;
                break;        
        }
于 2016-02-02T17:48:54.910 回答