我正在设置asp.net菜单的样式,并且试图了解StaticSelectedStyle-CssClass和StaticHoverStyle- CssClass参数的含义。
我的理解是,只要需要,使用这些参数定义的样式就会作为CSS类应用于相关元素。所以我创建菜单如下:
<asp:Menu ID="NavigationMenu" DataSourceID="NavigationSiteMapDataSource" StaticMenuStyle-CssClass="StaticMenuStyle" StaticMenuItemStyle-CssClass="StaticMenuItemStyle" StaticSelectedStyle-CssClass="StaticSelectedStyle" StaticHoverStyle-CssClass="StaticHoverStyle" Orientation="Horizontal" MaximumDynamicDisplayLevels="0" runat="server"> </asp:Menu>
它适用于StaticMenuStyle-CssClass和StaticMenuStyle- CssClass(将这些类应用于相关元素),但无论元素的选定状态或悬停状态如何,都不会应用StaticSelectedStyle- CssClass和StaticHoverStyle-CssClass。
我应该怎么做才能完成这项工作?
谢谢。
编辑:抱歉,我应该提到这是.NET4。这是生成的HTML:
<div id="NavigationMenu"> <ul class="level1 StaticMenuStyle"> <li><a class="level1 StaticMenuItemStyle selected" href="/Link.aspx">Link</a></li> </ul> </div>
如您所见,将应用StaticMenuStyle和StaticMenuItemStyle,但不会应用StaticSelectedStyle- CssClass或StaticHoverStyle- CssClass。不知道为什么。我知道我可以使用selected,但不会应用StaticSelectedStyle- CssClass的预期行为吗???通过使用selected,我对.NET在幕后所做的事情进行了假设,这是不对的。
好的,因此到目前为止,显然没有很多人尝试过.NET 4菜单。最终版本是几天前发布的,这并不奇怪。我似乎是第一个报告似乎是错误的人。如果有时间,我会向MS报告此情况,但是鉴于MS一直以来不关注错误报告的记录,因此我不急于这样做。
无论如何,这时最差的解决方案是将控件生成的CSS样式(检查标题)复制并粘贴到自己的样式表中,然后从那里进行修改。完成此操作后,不要忘记在菜单上设置IncludeStyleBlock =“ False”,以防止自动生成CSS,因为从现在开始我们将使用复制的块。从概念上讲,这是不正确的,因为您的应用程序不应依赖自动生成的代码,但这是我能想到的唯一选择。