1

ポストバックで、MasterPage のメニュー コントロールから選択したメニュー項目を取得できないようです。page_load で次のことを試しましたが、機能せず、「オブジェクト参照がオブジェクトのインスタンスに設定されていません」というエラーが発生します。

マスターページの HTML

<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>

MasterPage の Page_Load

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

2 に答える 2

2

page_load の if (!IsPostBack) { //Code here } の中にコードを入れてみてください。

于 2012-10-22T14:08:14.400 に答える
1

MenuItemClick イベントを使用できます。NavigateUrl プロパティが null "" の場合、クリック イベントが発生します。"#" または別のページへの URL がある場合、クリック イベントは機能しません。参考記事

  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

イベントが発生します...

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

イベントは発生しません...

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

注: サーバー側イベントへの Javascript ポストバックの代わりに、順序付けられていないリストを使用することになりました。asp.net MenuControl は、私の状況には十分な柔軟性がありませんでした。

于 2012-10-23T14:04:03.623 に答える