我一直在试图找到一个突出显示asp.net菜单当前所选菜单项的简单方法(所以用户知道他们所在的页面),但无论我尝试了什么都无法让它工作.在我的标记我有:
<asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal" StaticSelectedStyle-ForeColor="#99CCFF" DynamicSelectedStyle-ForeColor="#99CCFF"> <Items> <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Operations"/> <asp:MenuItem NavigateUrl="~/Analysis.aspx" Text="Analysis"/> <asp:MenuItem NavigateUrl="~/Dashboard.aspx" Text="Dashboard"/> <asp:MenuItem NavigateUrl="~/Flashboard.aspx" Text="Flashboard"/> <asp:MenuItem NavigateUrl="~/Spacequest.aspx" Text="SQ OBP"/> </Items> </asp:Menu>
而在服务器端Page_Load功能:
((Menu)Master.FindControl("NavigationMenu")).Items[0].Selected = true;
解决方法
您可以在菜单中使用StaticSelectedStyle属性.
<asp:menu [...]> <staticselectedstyle backcolor="LightBlue" borderstyle="Solid" bordercolor="Black" borderwidth="1"/> [...] </asp:menu>
此外,如果有一个类应用于所选项目(我不知道是否有但是会很方便),你可以简单地用你的CSS挂钩.这将比使用StaticSelectedStyle属性更好一些.
UPDATE
值得注意的是,您使用IncludeStyleBlock =“false”将会阻止您的菜单生成控制所选项所需的CSS.
关闭样式块,您必须提供自己的样式,并且不会使用菜单的自动生成样式.
从MSDN:
If you set this property to false,you cannot set style properties.
For example,you cannot add a DynamicHoverStyle-ForeColor attribute in
markup or set the DynamicHoverStyle.ForeColor property in code.
资料来源:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.includestyleblock.aspx