主页面中的ASP.NET菜单控件 - Hilight选择的菜单项

时间:2014-05-21 21:03:33

标签: asp.net menu

我知道这已被问过,之前已经回答过,但我仍然无法让它发挥作用。而且我已经把它归结为此。如果我在MenuItem中指定NavigateURL,它不起作用。如果我不这样做,菜单项会在点击时按预期更改其样式。但是,它作为导航菜单完全没用,因为它不再带你到任何地方! :)

因此,为了澄清,这项工作 - 根据指定的风格选择项目:

    <asp:menu id="NavigationMenu" staticdisplaylevels="1" orientation="Horizontal" runat="server">
        <staticselectedstyle backcolor="LightBlue" borderstyle="Solid" bordercolor="Black" borderwidth="1"/>
        <items>
            <asp:MenuItem Text="Home" Value="Home" />
            <asp:MenuItem Text="Software" Value="Software" />
        </items>
    </asp:menu>

这不起作用 - 只有更改是添加NavigateURLs:

    <asp:menu id="NavigationMenu" staticdisplaylevels="1" orientation="Horizontal" runat="server">
        <staticselectedstyle backcolor="LightBlue" borderstyle="Solid" bordercolor="Black" borderwidth="1"/>
        <items>
            <asp:MenuItem NavigateUrl="/Default.aspx" Text="Home" Value="Home" />
            <asp:MenuItem NavigateUrl="/Software.aspx" Text="Software" Value="Software" />
        </items>
    </asp:menu>

this other post中,OP正在使用NavigateURL,并已接受有关StaticSelectedStyle的答案。我不明白。

我想了解如何保持StaticSelectedStyle正常工作,同时使用NavigateURL。

我应该添加菜单在母版页中。导航的页面使用此母版页。

谢谢! -Sandra

编辑:

根据我对这个主题的阅读,我认为这不起作用,因为Menu控件只知道它在Postback上的位置。但是,如果您的菜单项带您到其他页面,它不再是回发,并且菜单控件重新加载,并且不知道单击了哪个项目。

1 个答案:

答案 0 :(得分:0)

尝试将一些代码添加到主文件的Page_Load部分,以便从菜单项中针对NaviagteUrl的URL反弹页面名称。这里:

Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

    For Each item As MenuItem In NavigationMenu.Items
        If Request.Url.AbsoluteUri.ToLower().Contains(Page.ResolveUrl(item.NavigateUrl.ToLower())) Then
            item.Selected = True
        End If
    Next

End Sub

那是在VB.NET中。它有效,我使用你上面的标记测试它。我希望你能弄清楚如何将它融入你的代码中。