5

我在我的测试 ASP.NET MVC 应用程序中有一个部分视图。该视图负责显示应用程序菜单按钮。

我想更改当前活动页面的按钮颜色。目前我写了类似的东西:

<ul id="menu">
    <% var activeClass = (string)(ViewData["currentPage"]) == "Home" ? "activeMenuButton" : ""; %>    
    <li><%= Html.ActionLink ("Home", "Index", "Home", new { @class = activeClass })%></li>

    <% activeClass = (string)(ViewData["currentPage"]) == "About" ? "activeMenuButton" : ""; %>    
    <li><%= Html.ActionLink ("About", "About", "Home", new { @class = activeClass })%></li>
</ul>

并在控制器操作中设置视图数据:

//in home action
ViewData["currentPage"] = "Home";

//in About action
ViewData["currentPage"] = "About";

这可行,但我必须修改每个控制器操作。有没有更好的方法来自动检测视图并以某种方式更改部分视图代码以相应地更改颜色。

4

1 回答 1

8

我认为您不需要 ViewData [“currentPage”]。改用ViewContext.RouteData.Values

试试这个:

<ul id="menu">
    <% var activeClass = (ViewContext.RouteData.Values["Controller"] == "Home"
        && ViewContext.RouteData.Values["Action"] == "Home") ? "activeMenuButton" : ""; %>

    <li><%= Html.ActionLink ("Home", "Index", "Home", new { @class = activeClass })%></li>

    <% activeClass = (ViewContext.RouteData.Values["Controller"] == "Home"
        && ViewContext.RouteData.Values["Action"] == "About") ? "activeMenuButton" : ""; %>

    <li><%= Html.ActionLink ("About", "About", "Home", new { @class = activeClass })%></li>
</ul>
于 2009-07-17T09:21:37.770 回答