Как установить переменную сеанса при щелчке по пункту меню в ASP.NET

Новичок ASP здесь, на моем веб-сайте мне нужно установить переменную сеанса, когда я щелкаю пункт меню (не при загрузке страницы или перед инициализацией или инициализацией).

Как я могу этого добиться, у меня на главной странице есть элемент управления меню, к которому прикреплен файл карты сайта?

Как узнать, когда был нажат определенный пункт меню?

<asp:Menu ID="mainMenu" runat="server" DataSourceID="siteMapSource"
    StaticDisplayLevels="10" Width="150px">
    <StaticSelectedStyle CssClass="menuNodeSelected" />
    <LevelMenuItemStyles>
        <asp:MenuItemStyle Font-Bold="True" Font-Underline="False" />
    </LevelMenuItemStyles>
    <StaticMenuItemStyle CssClass="menuNode" />
</asp:Menu>
<asp:SiteMapDataSource ID="siteMapSource" runat="server" ShowStartingNode="False" />

person Mr_Hmp    schedule 08.10.2014    source источник


Ответы (2)


Основываясь на вашем коде и документации, найденной на msdn, у вас должно получиться что-то вроде этого:

На код разметки (в результате будет получен HTML-код, который будет отправлен клиенту)

<asp:Menu ID="mainMenu" runat="server" DataSourceID="siteMapSource"
    StaticDisplayLevels="10" Width="150px"
    OnMenuItemClick="NavigationMenu_MenuItemClick">
    <StaticSelectedStyle CssClass="menuNodeSelected" />
    <LevelMenuItemStyles>
        <asp:MenuItemStyle Font-Bold="True" Font-Underline="False" />
    </LevelMenuItemStyles>
    <StaticMenuItemStyle CssClass="menuNode" />
</asp:Menu>
<asp:SiteMapDataSource ID="siteMapSource" runat="server" ShowStartingNode="False" />

Вы должны установить метод, который будет вызываться на стороне сервера OnMenuItemClick, это вызовет событие щелчка по меню. Это событие (в нашем случае): NavigationMenu_MenuItemClick.

В Code-Behind вы можете делать все, что захотите, когда выбран пункт меню.

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

В e.Item.Text; вы найдете, какой элемент был выбран.

На основе: http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.menuitemclick(v=vs.110).aspx

person adricadar    schedule 08.10.2014
comment
+1 за правильный ответ - хотя я был на минуту быстрее :) - person Pleun; 08.10.2014

ASP:Menu имеет Click событие. Вы можете обработать это событие, чтобы установить переменную сеанса.

http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.menuitemclick.aspx

Объявите это:

<asp:Menu ID="mainMenu" runat="server" onmenuitemclick="NavigationMenu_MenuItemClick" ...

И справиться с этим:

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