asp.net将类添加到当前menuItem

我是asp.net的新手,所以我将欣赏完整的代码答案。

我在asp.net上有一个网站,c#i在site.master页面添加了一个菜单,如下所示:

        

我现在需要添加,当用户在特定页面上,例如Pipes时,右侧menuItem应该具有不同的背景颜色。

我可以使用会话变量,但我不知道该怎么做。

任何人都可以为我写一个完整的例子吗?

先感谢您

您不需要使用会话变量跟踪页面,因为当您选择菜单项时,asp.net会跟踪您选择的项目并为您生成自己的CSS类(在大多数情况下)。 要获得更好的Firefox可视化下载firebug并查看HTML输出,您会看到它们将附加CSS样式,例如“asp-net.menu selectedItem”,然后创建一个.selectedItem {} CSS类,然后它会自动拾取样式。

但是,如果我记得它可能有点繁琐的样式微软控件,就好像你从输出中检查源代码,它不完全是HTML友好的。

如果要使用Microsoft方法设置菜单项的样式,请访问http://msdn.microsoft.com/en-us/library/ms366731.aspx

然而,有一个名为CSSfriendly http://cssfriendly.codeplex.com/的库,它以纯HTML格式呈现控件,允许您更轻松地附加CSS类。 例如:

 .CssAdapterMenu ul.AspNet-Menu /* Tier 1 */ { width: 961px !important; cursor:pointer; background-color:#000000; } .CssAdapterMenu ul.AspNet-Menu ul /* Tier 2 */ { left: 0; background-color:#f8f8f8; width: 145% !important; max-width: 160px !important; } .CssAdapterMenu ul.AspNet-Menu ul li:hover /* Tier 2 cell */ { background: #636363 url(../images/menu_bg_hover.png) no-repeat !important; } .CssAdapterMenu ul.AspNet-Menu ul .AspNet-Menu-Selected{ background: transparent url(../images/menu_bg_hover.png) no-repeat !important; } .CssAdapterMenu li.AspNet-Menu-WithChildren li .AspNet-Menu-ChildSelected { background: transparent url(../images/menu_bg_hover.png) no-repeat !important; } 

等等等等。 这里有很好的文档,这是我首选的样式方法。

修改您的代码,我的解释如下。

           

然后在你的CSS中:

 .normal{ background-color:#eaeaea; } .selected { background-color:#000000; } .hover{ background-color:#FF0000; } 

您可以使用

  

  

除此之外,您通常需要MenuItem NavigateUrl属性。 所以整个事情看起来像是:

    ...     

我不知道任何服务器端方法。 我通常使用jQuery来使用客户端方法。 为此,你应该给你的菜单一个CssClass 。 例如, CssClass="mymenu"

在Master Page的head标签内,执行此操作。

 $(document).ready(function() { // not bothering about query strings and hash right now. var url = window.location.href.toString().split("/").pop(); $(".mymenu a[href*='" + url + "']") .closest("li") .addClass("selected-item"); }); 

免责声明 :我不知道服务器端这个看似微不足道的要求的解决方案。 这就是我一直在使用的。 哦! 这段代码适用于ASP.NET 4.0。 在此之前,使用table完成渲染。 您可能希望更改最接近.closest("td")

我遇到了类似的问题,我无法对每个MenuItem进行样式化。 使用这篇文章……

asp:MenuItem / CSS

…你可以使用如下代码:

 

和CSS:

 div.menu ul li a[href*="Default.aspx"] { background-color: rgb(100, 100, 100); } div.menu ul li a[href*="Page1.aspx"] { background-color: rgb(150, 50, 100); } 

希望这有助于某人。 🙂