我知道这已被问过,之前已经回答过,但我仍然无法让它发挥作用。而且我已经把它归结为此。如果我在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上的位置。但是,如果您的菜单项带您到其他页面,它不再是回发,并且菜单控件重新加载,并且不知道单击了哪个项目。
答案 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中。它有效,我使用你上面的标记测试它。我希望你能弄清楚如何将它融入你的代码中。