在MVC中突出显示或更改当前菜单项CSS类的最佳方法

时间:2012-09-12 17:41:00

标签: asp.net-mvc vb.net asp.net-mvc-3 razor

在我寻找解决方案时,我已经阅读了一些文章。他们似乎都喜欢硬编码或HTML Helper替代品;但是,我想要简单和数据库驱动的东西。这是 my 最佳解决方案(由我提交作为答案)。

以下是其他一些文章的解决方案:

3 个答案:

答案 0 :(得分:1)

只需从你的一个控制器传递TempData,如下所示:

TempData("CurrentPage") = "Nutrition"

然后,在您的视图中添加如下条件:

<ul>

@For Each item In Model
    Dim currentItem = item

    If (Not String.IsNullOrEmpty(TempData("CurrentPage")) And TempData("CurrentPage") = currentItem.NAV_Element) Then
        @<li><a class="current" href="@Html.DisplayFor(Function(modelItem) currentItem.NAV_Destination)">@Html.DisplayFor(Function(modelItem) currentItem.NAV_Element)</a></li>

    Else
        @<li><a href="@Html.DisplayFor(Function(modelItem) currentItem.NAV_Destination)">@Html.DisplayFor(Function(modelItem) currentItem.NAV_Element)</a></li>
    End If


Next

</ul>

答案 1 :(得分:1)

我过去通过使用路由值生成href,然后根据该选项将父选项卡设置为活动来完成此操作。

这是一个引导程序版本:

 <ul class="nav nav-tabs">
     <li><a href="/somepage">Some page</a></li>
     <li><a href="/someotherpage">Some other Page</a></li>
 </ul>

 <script type="text/javascript">
     $(function(){
          $('a[href="@Url.Action(ViewContext.RouteData.Values)"]').parents("li").addClass("active");
     };

 </script>

的Si

答案 2 :(得分:0)

我知道我来不及回答这个问题,但是如果您正在使用ASP MVC并寻找使用控制器和动作突出显示菜单项,那么这个解决方案对我来说非常合适 -

x_num =
   5.400000000000000   3.700000000000000   1.500000000000000   0.200000000000000
   4.800000000000000   3.400000000000000   1.600000000000000   0.200000000000000
   4.800000000000000   3.000000000000000   1.400000000000000   0.100000000000000
   4.300000000000000   3.000000000000000   1.100000000000000   0.100000000000000
   5.800000000000000   4.000000000000000   1.200000000000000   0.200000000000000

x_str =
  5×1 cell array
    'Iris-setosa'
    'Iris-setosa'
    'Iris-setosa'
    'Iris-setosa'
    'Iris-setosa'