Я буду держать это простым. В целях разработки я хочу создать «режимы», представляющие различные типы пользователей, которые будут соответственно видеть другую строку меню. У меня есть все, как я хочу, кроме выбора «режима», в котором я хочу работать, как только я нажимаю на элемент меню, он забывает, в каком «режиме» он находился, и обновляется с помощью панели меню по умолчанию. , Я предполагаю, что это проблема с ViewState, который не поддерживается должным образом по обратной передаче? Я искал по всем форумам и в других местах и не могу понять, как добиться того, что я хочу. Вот мой код с codebehind.
Я добавил следующее к Page_Load:
If Not IsPostBack Then
modeMenu.SelectedValue = Session("mode")
End If
РЕДАКТИРОВАТЬ : остальное то же самое, за исключением одной дополнительной строки в коде позади. Спасибо ТС за ответ:)
<asp:Menu ID="mode1Nav" runat="server" CssClass="menu"
Visible="False" ViewStateMode="Enabled">
<Items>
<asp:MenuItem NavigateUrl="~/Home1.aspx" />
<asp:MenuItem NavigateUrl="~/DoSomething1.aspx" />
</Items>
</asp:Menu>
<asp:Menu ID="mode2Nav" runat="server" CssClass="menu"
Visible="False">
<Items>
<asp:MenuItem NavigateUrl="~/Home2.aspx" />
<asp:MenuItem NavigateUrl="~/DoSomething2.aspx" />
</Items>
</asp:Menu>
Это "modeMenu" используется для выбора моего режима.
<asp:DropDownList ID="modeMenu" runat="server" AutoPostBack="True"
ViewStateMode="Enabled" CssClass="modeMenu">
<asp:ListItem>Mode1</asp:ListItem>
<asp:ListItem>Mode2</asp:ListItem>
</asp:DropDownList>
Этот код позади Sub предназначен для отображения соответствующего меню для любого режима, в котором вы находитесь, И ПОМНИТЕ, lol.
Protected Sub mode(ByVal sender As Object, ByVal e As System.EventArgs) Handles modeMenu.Load, modeMenu.SelectedIndexChanged
Session.Add("mode", modeMenu.SelectedValue) //Added this
Select Case (modeMenu.SelectedValue)
Case "Mode1"
mode1Nav.Visible = True
mode2Nav.Visible = False
Case "Mode2"
mode1Nav.Visible = False
mode2Nav.Visible = True
End Select
End Sub
Как я уже говорил, проблема в том, что после выбора моего режима, когда я пытаюсь использовать меню, оно обновляет и забывает режим.
РЕДАКТИРОВАТЬ : Кроме того, я добавил следующий CSS, чтобы убрать меню из режима. Это работает довольно хорошо, как это. Действительно удобно для разработки. :)
.modeMenu {
position: fixed;
top: 5px;
left: 5px;
}