我一直试图找到一种简单的方法来突出显示当前所选菜单项的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>
Run Code Online (Sandbox Code Playgroud)
并在服务器端Page_Load功能:
((Menu)Master.FindControl("NavigationMenu")).Items[0].Selected = true;
Run Code Online (Sandbox Code Playgroud)
但这不起作用.我尝试使用站点地图(即使站点地图不是我想要使用的),但这也没有用.有任何想法吗?
Jam*_*xon 19
StaticSelectedStyle您可以在菜单中使用该属性.
<asp:menu [...]>
<staticselectedstyle backcolor="LightBlue"
borderstyle="Solid"
bordercolor="Black"
borderwidth="1"/>
[...]
</asp:menu>
Run Code Online (Sandbox Code Playgroud)
见此处获得更多信息.
此外,如果有一个类应用于所选项目(我不确定是否有,但它会很方便),你可以简单地用你的CSS挂钩.这比使用该StaticSelectedStyle属性更好.
UPDATE
值得注意的是,您的使用IncludeStyleBlock="false"将阻止您的菜单生成控制所选项目所需的CSS.
关闭样式块后,您必须提供自己的样式,并且不会使用菜单的自动生成样式.
来自MSDN:
如果将此属性设置为false,则无法设置样式属性.例如,您无法在标记中添加DynamicHoverStyle-ForeColor属性或在代码中设置DynamicHoverStyle.ForeColor属性.
来源:http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.menu.includestyleblock.aspx
我想你必须遍历菜单项并查看当前页面URL是否包含菜单项的NavigateUrl.
foreach (MenuItem item in mn.Items)
{
if (Request.Url.AbsoluteUri.ToLower().Contains(Page.ResolveUrl(item.NavigateUrl.ToLower()))
{
item.Selected = true;
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
54188 次 |
| 最近记录: |