根据所选控制器放置CSS类

时间:2012-06-07 03:19:49

标签: asp.net-mvc-3

如何根据所选控制器将 class =“active”放在<li>内?

<li  ><a href="@Url.Action("index", "Home")">Home</a></li>
<li  ><a href="@Url.Action("index", "Car")">Cars</a></li>

祝福

1 个答案:

答案 0 :(得分:1)

我通常会创建一个动作链接html帮助程序来完成此任务。请注意,我将链接本身标记为“已选择”与列表项。

public static class ActionLinkHelpers
{
    public static MvcHtmlString SelectedActionLink(this HtmlHelper helper, string linkText, string actionName, string controllerName)
    {
        var controller = (string) helper.ViewContext.RouteData.Values["controller"];
        if (string.Compare(controller, controllerName, StringComparison.InvariantCultureIgnoreCase) == 0)
        {
            return helper.ActionLink(linkText, actionName, controllerName, null, new { Class = "selected" }); 
        }

        return helper.ActionLink(linkText, actionName, controllerName);
    }
}

在项目中设置了操作链接帮助程序后,您的列表将如下所示:

<li>@Html.SelectedActionLink("Home", "index", "Home")</li>
<li>@Html.SelectedActionLink("Cars", "index", "Car")</li>

编辑:

为了使用自定义助手MVC必须要注意它。例如,将新文件夹添加到项目“HtmlHelpers”中,并将此类放在其中。从那里你需要在/Views/Web.config

添加一行
<pages pageBaseType="System.Web.Mvc.WebViewPage">
  <namespaces>
    <add namespace="YourNameSpace.HtmlHelpers"/>
  </namespaces>
</pages>