Asp.net 如何显示从模板构建的网站上选择的选项卡?

Asp.net 如何显示从模板构建的网站上选择的选项卡?,asp.net,asp.net-mvc,css,Asp.net,Asp.net Mvc,Css,当您单击stackoverflow顶部的问题、标记、用户等时,您正在查看的问题将变为高亮显示的橙色。这(通常)是通过将其中一个的css更改为“选定”来完成的 如果您有一个构建所有页面的模板,并且该模板在顶部包含这些按钮,如何根据您正在查看的页面突出显示其中一个按钮 问题是你会有一个模板,而不是每个页面一个。。。想法 (如果有必要,我正在使用ASP.NET MVC 2并设置母版页)通过检查您所在的位置动态添加一个类。在rails中,我通常根据控制器添加一个“选定”类,例如,如果我在问题控制器中,我

当您单击stackoverflow顶部的问题、标记、用户等时,您正在查看的问题将变为高亮显示的橙色。这(通常)是通过将其中一个的css更改为“选定”来完成的

如果您有一个构建所有页面的模板,并且该模板在顶部包含这些按钮,如何根据您正在查看的页面突出显示其中一个按钮

问题是你会有一个模板,而不是每个页面一个。。。想法


(如果有必要,我正在使用ASP.NET MVC 2并设置母版页)

通过检查您所在的位置动态添加一个类。在rails中,我通常根据控制器添加一个“选定”类,例如,如果我在问题控制器中,我应该在问题选项卡中添加一个选定类。我不确定asp.net(如何检查控制器或在站点中的位置),但这是总体思路

通过检查您所在的位置动态添加类。在rails中,我通常根据控制器添加一个“选定”类,例如,如果我在问题控制器中,我应该在问题选项卡中添加一个选定类。我不确定asp.net(如何检查控制器或在站点中的位置),但这是总体思路

有多种方法可以做到这一点,具体取决于您可以对HTML代码进行多少更改

在最好的情况下,但对于大多数HTML操作,您应该将链接包装在一个强标记中。是否用强标记包装锚点或用强标记替换锚点取决于您*,但强标记为链接添加了类属性没有的语义含义,这意味着原始HTML仍然显示当前链接高亮显示。不过,要以编程方式实现这一效果,您需要很多IF语句或类似的逻辑

<li><a href="...">Home</a></li>
<li><strong>News</strong></li>
<li><a href="...">About</a></li>
  • 新闻
  • 在最坏的情况下,通过最少的HTML操作,向每个LI添加一个类,然后更改一个body类,将允许您控制单个导航元素的外观。这很简单,但HTML中缺少任何语义结构

    <style type="text/css">
    .in-news .nav-news { font-weight: 600; }
    </style>
    <body class="in-news">
    ...
    <ul>
    <li class="nav-home"><a href="...">Home</a></li>
    <li class="nav-news"><a href="...">News</a></li>
    <li class="nav-about"><a href="...">About</a></li>
    </ul>
    
    
    .in news.nav news{font-weight:600;}
    ...
    

    [*]对于一个页面是否应该在站点导航中链接到自身,有很多意见。这两种情况都有很多主观原因。我将把这留给您……

    有多种方法可以做到这一点,具体取决于您可以对HTML代码进行多少更改

    在最好的情况下,但对于大多数HTML操作,您应该将链接包装在一个强标记中。是否用强标记包装锚点或用强标记替换锚点取决于您*,但强标记为链接添加了类属性没有的语义含义,这意味着原始HTML仍然显示当前链接高亮显示。不过,要以编程方式实现这一效果,您需要很多IF语句或类似的逻辑

    <li><a href="...">Home</a></li>
    <li><strong>News</strong></li>
    <li><a href="...">About</a></li>
    
  • 新闻
  • 在最坏的情况下,通过最少的HTML操作,向每个LI添加一个类,然后更改一个body类,将允许您控制单个导航元素的外观。这很简单,但HTML中缺少任何语义结构

    <style type="text/css">
    .in-news .nav-news { font-weight: 600; }
    </style>
    <body class="in-news">
    ...
    <ul>
    <li class="nav-home"><a href="...">Home</a></li>
    <li class="nav-news"><a href="...">News</a></li>
    <li class="nav-about"><a href="...">About</a></li>
    </ul>
    
    
    .in news.nav news{font-weight:600;}
    ...
    

    [*]对于一个页面是否应该在站点导航中链接到自身,有很多意见。这两种情况都有很多主观原因。我将把这个问题留给你……

    这是一个很好的问题。我记得在ASP.NET中必须这样做,但我还没有考虑过在ASP.NETMVC中这样做

    对于ASP.NET MVC,您可以创建一个用户控件,但我喜欢
    HTMLHelper
    扩展方法的想法。从上面看贝塞库的想法,这将是你控制的最终结果。该方法将接受一组元素,然后从这些元素中可以确定所选页面

  • 创建一个具有DisplayText、ActionName和ControllerName属性的
    MenuTab
    对象
  • 创建一个
    System.Web.MVC.HtmlHelper
    扩展,该扩展以
    MenuTab
    的集合作为参数,例如
    公共静态MvcHtmlString选项卡菜单(此HtmlHelper,IEnumerable MenuTab)
    。请注意
    MvcHtmlString
    的返回类型,因此它同时适用于response.write和html.encode
  • 在上述方法的主体中,您可以通过
    HtmlHelper
    查看当前控制器和操作的页面是否与传入的
    菜单选项卡的控制器和操作名称匹配,如果匹配,构建一个
    ActionLink
    ,该链接将html类属性设置为选定项的css类
  • 母版页中的示例用法如下:


    在我正在使用的一个页面中,我另外传递了一个id参数,这样我就可以在同一个页面上有多个菜单(think side和top navigation)。

    这是一个很好的问题。我记得在ASP.NET中必须这样做,但我还没有考虑过在ASP.NETMVC中这样做

    对于ASP.NET MVC,您可以创建一个用户控件,但我喜欢
    HTMLHelper
    扩展方法的想法。从上面看贝塞库的想法,这将是你控制的最终结果。该方法将接受一组元素,然后从这些元素中可以确定所选页面

  • 创建一个具有DisplayText、ActionName和ControllerName属性的
    MenuTab
    对象
  • 创建一个
    System.Web.MVC.HtmlHelper
    扩展,该扩展接受<