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 № 1Prova 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.