所以我要离开这个例子:
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”等等。
答案 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> </p></td>
<td><p>Primera Sesión Extraordinaria 2015</p></td>
</tr>
<tr>
<td><p> </p></td>
<td><p>Primera Sesión Extraordinaria 2015</p></td>
</tr>
<tr>
<td><p> </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
。