Home > Web Front-end > CSS Tutorial > How to Effectively Style Active Navigation Links in ASP.NET MVC?

How to Effectively Style Active Navigation Links in ASP.NET MVC?

Susan Sarandon
Release: 2024-12-17 13:42:18
Original
154 people have browsed it

How to Effectively Style Active Navigation Links in ASP.NET MVC?

Styling Navigation Elements with "active" Class in ASP.NET MVC

Introduction

In ASP.NET MVC applications, the Html.ActionLink helper is commonly used to create navigation links. When incorporating Bootstrap styling, it's essential to apply the "active" class to the corresponding navigation element. This article will guide you through adding the "active" class to navigation links using the Html.ActionLink helper and provide a more elegant solution using an HTML helper extension.

Applying "active" Class with Html.ActionLink

Consider the following scenario:

<ul class="nav navbar-nav">
  <li>@Html.ActionLink("Home", "Index", "Home", null, new {@class="active"})</li>
  <li>@Html.ActionLink("About", "About", "Home")</li>
  <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>
Copy after login

This code generates the navigation links, but the "active" class is applied to the tag, leading to an invalid Bootstrap structure. To fix this, apply the "active" class to the

  • element instead:

    <ul class="nav navbar-nav">
      <li class="active">@Html.ActionLink("Home", "Index", "Home")</li>
      <li>@Html.ActionLink("About", "About", "Home")</li>
      <li>@Html.ActionLink("Contact", "Contact", "Home")</li>
    </ul>
    Copy after login

    This will correctly apply the "active" class to the current navigation element based on the active page.

    Using an HTML Helper Extension for Dynamic Styling

    To provide a more flexible and reusable solution, you can create an HTML helper extension like this:

    public static string IsSelected(this HtmlHelper html, string controllers = "", string actions = "", string cssClass = "selected")
    {
        ViewContext viewContext = html.ViewContext;
        bool isChildAction = viewContext.Controller.ControllerContext.IsChildAction;
    
        if (isChildAction)
            viewContext = html.ViewContext.ParentActionViewContext;
    
        RouteValueDictionary routeValues = viewContext.RouteData.Values;
        string currentAction = routeValues["action"].ToString();
        string currentController = routeValues["controller"].ToString();
    
        if (String.IsNullOrEmpty(actions))
            actions = currentAction;
    
        if (String.IsNullOrEmpty(controllers))
            controllers = currentController;
    
        string[] acceptedActions = actions.Trim().Split(',').Distinct().ToArray();
        string[] acceptedControllers = controllers.Trim().Split(',').Distinct().ToArray();
    
        return acceptedActions.Contains(currentAction) &amp;&amp; acceptedControllers.Contains(currentController) ?
            cssClass : String.Empty;
    }
    Copy after login

    This extension method requires three parameters: controllers, actions, and an optional CSS class. It checks if the current action and controller match the specified values and returns the cssClass if they do, or an empty string otherwise.

    Usage of HTML Helper Extension

    To use this extension, add a using statement to the page:

    @using YourNamespace;
    Copy after login

    Then, in the view, you can apply the "active" class as follows:

    <ul>
        <li>@Html.ActionLink("Home", "Home", "Default", null, new {@class="@Html.IsSelected(actions: "Home", controllers: "Default")"})</li>
        <li>@Html.ActionLink("About", "About", "Default", null, new {@class="@Html.IsSelected(actions: "About", controllers: "Default")"})</li>
    </ul>
    Copy after login

    Conclusion

    By applying the "active" class to the proper HTML element and leveraging the HTML helper extension provided, you can effectively manage the active state of navigation links in ASP.NET MVC applications, ensuring consistency and cleaner code organization.

    The above is the detailed content of How to Effectively Style Active Navigation Links in ASP.NET MVC?. For more information, please follow other related articles on the PHP Chinese website!

  • source:php.cn
    Statement of this Website
    The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
    Latest Articles by Author
    Popular Tutorials
    More>
    Latest Downloads
    More>
    Web Effects
    Website Source Code
    Website Materials
    Front End Template