/ / Ottieni l'elemento selezionato dal controllo del menu asp.net nel codice dietro - asp.net, applicazioni web

Ottieni l'elemento selezionato dal controllo del menu asp.net nel codice sottostante - asp.net, applicazioni web

Su un post indietro non riesco a ottenere il selezionatovoce di menu dal controllo menu nella MasterPage. Ho provato quanto segue in page_load ma non funziona ed errori "Riferimento oggetto non impostato su un'istanza di un oggetto".

HTML nella pagina principale

<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false"
IncludeStyleBlock="false" Orientation="Horizontal">
<Items>
<asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home" />
<asp:MenuItem NavigateUrl="~/About.aspx" Text="About" />
<asp:MenuItem NavigateUrl="~/Contact.aspx" Text="Contact" />
</Items>
</asp:Menu>

Page_Load nella pagina principale

 If IsPostBack Then
Select Case NavigationMenu.SelectedItem.Text
Case "Home"
"code
Case "About"
"code
Case "Contact"
"code
End Select
End If

risposte:

2 per risposta № 1

Prova a inserire il tuo codice se (! IsPostBack) {// Codice qui} nel page_load.


1 per risposta № 2

È possibile utilizzare l'evento MenuItemClick. Se la proprietà NavigateUrl è null "", quindi l'evento click viene attivato, se si dispone di "#" o di un URL in un'altra pagina, l'evento click non funziona. Articolo di riferimento

  Protected Sub NavigationMenu_MenuItemClick(sender As Object, e As System.Web.UI.WebControls.MenuEventArgs) Handles NavigationMenu.MenuItemClick
Select Case e.Item.Text
Case "Home"
"code
Case "About"
"code
Case "Contact"
"code
End Select
End Sub

L'evento sparerà ...

<asp:MenuItem NavigateUrl="" Text="Home" />

L'evento non si attiva ...

<asp:MenuItem NavigateUrl="~/About.aspx" Text="About" />

Nota: Ho finito per utilizzare un elenco non ordinato invece con postback Javascript agli eventi lato server. Il MenuControl asp.net non era abbastanza flessibile per la mia situazione.