MVC布局导航栏活动隐藏/显示DIV

时间:2015-07-15 01:09:18

标签: asp.net-mvc razor

所以我要离开这个例子:

better way to get active pages

我想在_Layout.cshtml中完成的是:

<div id="navbar">
<div><a href="~/Home"><img src="~/Images/home_on.png" /></a></div>
<div><a href="~/Home"><img src="~/Images/home_off.png" /></a></div>
<div><a href="~/Home"><img src="~/Images/contact_on.png" /></a></div>
<div><a href="~/Home"><img src="~/Images/contact_off.png" /></a></div>
</div>

导航栏div根据活动页面而变化。如果它的家,然后显示“home_on.png”div。如果它不显示“home_off.png”等等。

1 个答案:

答案 0 :(得分:0)

我过去曾经使用过它。

在布局的顶部声明:

<!-- prefix free lib for older browsers -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>

<table class="tablagradiente" align="center" width="41%">
  <tr>
    <td><p>Sesiones Ordinarias</p></td>
    <td><p>Sesiones Extraordinarias</p></td>
  </tr>
  <tr>
    <td><p>&nbsp;</p></td>
    <td><p>Primera Sesión Extraordinaria 2015</p></td>
  </tr>
  <tr>
    <td><p>&nbsp;</p></td>
    <td><p>Primera Sesión Extraordinaria 2015</p></td>
  </tr>
  <tr>
    <td><p>&nbsp;</p></td>
    <td><p>Primera Sesión Extraordinaria 2015</p></td>
  </tr>
</table>

然后,您可以根据预期的控制器和操作渲染适当的图像:

@{
    var currentController = ViewContext.RouteData.Values["controller"] as string ?? string.Empty;
    var currentAction = ViewContext.RouteData.Values["action"] as string ?? string.Empty;

    string getImageSource(string basePath, string controller, string action)
    {
         var onOrOff = currentController.Equals(controller, StringComparison.OrdinalIgnoreCase) && currentAction.Equals(action, StringComparison.OrdinalIgnoreCase) ? "on.png" : "off.png";
         return string.Format("{0}_{1}", basePath, onOrOff);
    }
}

我认为基础<div id="navbar"> <div><a href="~/Home"><img src="@(getImageSource("~/Images/home", "Home", "Index"))" /></a></div> <div><a href="~/Home/Contact"><img src="@(getImageSource("~/Images/contact", "Home", "Contact"))" /></a></div> </div> 网址将转到~/Home上的Index操作,并且HomeController将转到~/Home/Contact操作Contact

相关问题