我是一名前端开发人员,他使用看似无比的.NET开发工具,似乎无法解决为什么ASP菜单控件没有显示所选菜单项的原因。 .NET开发人员向我发送了以下代码。这里是否缺少一些需要启用CSS的规则?
提前致谢
控制器配置
<asp:Menu ID="mnuMaster"
runat="server"
DataSourceID="sitemapMaster"
StaticDisplayLevels="1"
MaximumDynamicDisplayLevels="0"
Orientation="Horizontal"
StaticEnableDefaultPopOutImage="False"
CssSelectorClass="TopMainMenu" onmenuitemdatabound="mnuMaster_MenuItemDataBound"
StaticBottomSeparatorImageUrl="~/App_Themes/PCTools/Images/top_menu_separator.gif"
></asp:Menu>
CSS选择的课程
.TopMainMenu .AspNet-Menu li a:active, .TopMainMenu li.AspNet-Menu-Selected a,.TopMainMenu li.AspNet-Menu-ChildSelected a,.TopMainMenu li.AspNet-Menu-ParentSelected a {
background:url(Images/navbg.gif) repeat-x 0 -86px;
}
答案 0 :(得分:0)
我们通常在设计师提供的普通HTML中使用标准UL组,然后将它们转换为HTML服务器标签。
可能还有其他解决方案,但我们通常采用的解决方案就是这样。
首先,每个顶级菜单项都需要一个ID。
如果菜单位于母版页上(我将假设它是)
在后面的母版页代码中,您可以放置这样的代码。
//Discover currently navigated page TYPE
if (this.Page is `pagetype of the current page`)
//add a CSS class to the top level menu item
miFirstMenuItem.Attributes["class"] += " highlightedMenuItemCSSClass";
然后HTML输出会将另一个CSS类附加到您应用特定样式的菜单项
这是一个现实生活中的例子 节点您必须将SetActiveTab方法中的类型更改为MenuItem的正确类型
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
bool homeVisited = Page is Default;
bool productsVisited = Page is Products_List;
bool demoVisited = Page is Demonstrations;
bool contactVisited = Page is Contact;
if (homeVisited)
SetActivePage(hlHome, ButtonSide.Left);
if (productsVisited)
SetActivePage(hlProducts, ButtonSide.Middle);
if (demoVisited)
SetActivePage(hlDemo, ButtonSide.Middle);
if (contactVisited)
SetActivePage(hlContact, ButtonSide.Right);
}
}
这显示了与上述不同的方法,但你可以用link.Attributes [“class”] + =“cssClass”替换它;注意第一个“。
之后的空格另外ButtonSide是我添加的一个枚举,因为所有中间的menuitems在我的特定情况下都有相同的CSS类,左右也是。
private void SetActivePage(HyperLink link, ButtonSide side)
{
if (side == ButtonSide.Left)
link.CssClass = "currentleft";
if (side == ButtonSide.Middle)
link.CssClass = "currentmiddle";
if (side == ButtonSide.Right)
link.CssClass = "currentright";
}
答案 1 :(得分:0)
VS201 / .Net4中似乎存在一个错误,其中您在de asp.menu属性中指定的CSS类名称为StaticSelectedStyle&amp; DynamicSelectedStyle被忽略。菜单始终使用“已选择”的类名。