asp:menu : 当页面加载不同样式时需要显示子菜单项

Posted

技术标签:

【中文标题】asp:menu : 当页面加载不同样式时需要显示子菜单项【英文标题】:asp:menu : need to show sub-menu items when page is loaded with different style 【发布时间】:2012-08-22 08:50:50 【问题描述】:
    <asp:SiteMapDataSource runat="server" ID="RelativeSiteMapDataSource" StartFromCurrentNode="False"
    ShowStartingNode="False" SiteMapProvider="CatalogSiteMap" />

<asp:Menu runat="server" ID="Navigator" MaximumDynamicDisplayLevels="0" StaticDisplayLevels="2" 
    Orientation="Vertical" DataSourceID="RelativeSiteMapDataSource"   />

我在几个 ASPX 页面中有上述代码。

我想要做的是在页面加载时显示所有子菜单项,并且应该有某种缩进来显示菜单项的层次结构。上面的代码当前在单击其父菜单项时会打开子菜单(例如,当我单击产品菜单时,它会显示它的子菜单)。

PS:由于我是新用户,因此不允许附加图像。 但是我已经展示了我希望如何在下面显示菜单,请提出建议。

产品

库存 缺货

订单

采购订单 销售订单 延期交货 发票订单

文件

购买 发票

更新 1: 目前使用上述代码,加载页面时不会显示所有菜单项(和子菜单项)。所以我首先想调整 asp:menu 以获取所有菜单项,然后我想应用 CSS(与 asp:menu 一起)来显示上述方式。

更新 2:这是菜单的样子(取自查看源代码)。

产品 命令 文件

【问题讨论】:

这是一个客户端问题,所以显示实际的 html 输出,然后 CSS 可能会通过使用背景图像来解决这个问题。您的服务器端代码无助于解决此问题。 我已经更新了这个问题,让问题更加清晰。 再次显示您的 HTML,而不是您的 .net 代码。 这是来自 viewsource 的 HTML 输出。 prodxeon/products.aspx" class="Menu-Link" title="Products">产品 prodxeon/orders.aspx" class="Menu-Link" title="Orders">订单 prodxeon/documents.aspx" class="Menu-Link" title="Documents">文档 【参考方案1】:

在 asp:menu 源代码(aspx 页面)中,只需设置两个属性,即:RenderingMode ="List"StaticDisplayLevels="3",我创建了您希望在页面加载时显示的相同菜单。现在您可以将 css 应用到所有这些简单的项目符号列表中。

【讨论】:

我在 asp:menu 属性中看不到渲染模式。另外,我如何指定 CSS,在我的情况下,我希望子菜单项带有项目符号并向右移动?谢谢。 StaticDisplayLevels="3" 确实显示子菜单项,但仅在我单击父菜单项之后。如何显示整个菜单(包括子菜单、子子菜单、子子子菜单?) asp.net 中的属性名称区分大小写。您正在输入小写字母。也可以通过这种方式正确检查属性名称。打开属性窗口。然后单击显示 a-z 图像的小按钮。它将按排序顺序显示属性。现在用字母“R”列出的第一个属性是 RenderingMode。只需将其值设置为列表。在此之后它应该可以正常工作。如果出现子菜单,它还会显示它们已经向右移动 我检查属性的方法是输入空格键,它会显示所有可用的属性。例如,我键入 StaticDisplayLevels="3" 确实会显示子菜单项,但仅在我单击父菜单项后才会显示。你知道为什么会这样吗?您还在上面的回复中说,如果出现子菜单,显示会发生变化?我不清楚。

以上是关于asp:menu : 当页面加载不同样式时需要显示子菜单项的主要内容,如果未能解决你的问题,请参考以下文章

Chrome 未加载样式表

vue加载中loading提示信息(iView Spin)

混合内容页面:请求不安全的样式表错误

link和@import引入外部样式的区别

在运行时加载样式表

为页面动态换肤(即调用不同css文件时),刷新主页时总是会先加载出默认样式,闪一下后才出现设定样式