Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ASP.NET中使用无序列表设置导航样式的最佳方法_Asp.net_Css - Fatal编程技术网

在ASP.NET中使用无序列表设置导航样式的最佳方法

在ASP.NET中使用无序列表设置导航样式的最佳方法,asp.net,css,Asp.net,Css,在ASP.NET(不是MVC)中,以编程方式在用于导航的无序列表上设置样式的最佳方法是什么,以便在查看该页面时将相应的菜单项设置为活动项 这很可能与母版页一起使用。您的问题的答案在很大程度上取决于您如何实现列表{用户控制与否,等等}。我要做的是实现由用户控件生成的列表 我会让UserControl标记每个元素,如下所示: <{...} class="GeneratedMenuItem"> {...} {…} 我会在样式表中有合适的样式;当然,如果是在用户控件中,那么您可能可以使用

在ASP.NET(不是MVC)中,以编程方式在用于导航的无序列表上设置样式的最佳方法是什么,以便在查看该页面时将相应的菜单项设置为活动项


这很可能与母版页一起使用。

您的问题的答案在很大程度上取决于您如何实现列表{用户控制与否,等等}。我要做的是实现由用户控件生成的列表

我会让UserControl标记每个元素,如下所示:

<{...} class="GeneratedMenuItem"> {...}
{…}

我会在样式表中有合适的样式;当然,如果是在用户控件中,那么您可能可以使用主题(但这取决于您使用的是哪个版本的ASP.net)。

好问题,从ASP糟糕的旧时代起,我就一直在尝试各种方法来实现这一点,但还没有找到完美的锤子

通常,我使用Request.Url.AbsoluteUri(或类似)作为任何呈现函数的参数,并且通常在适当的节点上设置一个css类“current”或类似,以及根据需要呈现子节点

我经常使用xml/xsl组合,这通常可以在大多数cms平台上使用,尽管我从未对启动xsl转换只是为了输出nav列表的开销感到满意,但如果您知道xsl,它是生成html的一个非常好的工具,并且您可以始终缓存输出-对于小型静态html站点偶尔会出现这种情况,我经常在构建过程中使用这种方法来呈现静态菜单标记

我还多次使用过aspnet站点地图功能,如果使用css友好的适配器,这是非常好的—默认呈现会产生非常难看的标记


本周早些时候,我发现了这篇文章:它使用t4模板创建了一个强类型导航类,我肯定会进一步研究这一点。

我采用的方法是为母版页中的每个导航项创建ASP.NET超链接控件

然后,在母版页中,我创建了一个公共方法,将适当的“选定”CSS样式分配给我指定的控件:

Public Sub SetNavigationPage(ByVal MenuName As String)

   DirectCast(Me.FindControl(MenuName), HyperLink).CssClass = "MenuCurrent"

End Sub
然后在我的内容页中,我只需要相应地引用母版页

Dim myMaster As EAF = DirectCast(Me.Master, EAF)
myMaster.SetNavigationPage("hypSearchRequest")
这使我能够灵活地添加/删除各个页面上的导航项目,并且在必要时还能够将多个页面分配给管理员导航选项


还值得注意的是,引用超链接控件并设置可见性属性(用于隐藏管理页面)不起作用。这是由于母版页和内容页的加载顺序。相反,我创建了另一个CSS类,该类只需设置可见性属性,并使用与上面相同的方法。

如何使用主题?这将是一个ASP.NET 2.0应用程序(VS 2008.NET 3.5)我已经有一段时间没有使用主题了,但我假设可以为他们的用户控件设置一个主题。现在我想,我认为用户控件上的主题在ASP.NET 2.0中不起作用。我不确定它们是否在.NET 3.5中实现。如果在CSS中设置可见性属性,则菜单在标记中仍然可见,但不显示在浏览器中。这将使查看您的标记的人知道有更多可用菜单。我认为服务器端可见性是更好的方法。