---
title: Highlight parent menu items
slug: cms-12/docs/how-to-highlight-parent-menu-items
docTags: 
createdAt: 2026-08-10T15:55:59.000Z
---

There are scenarios where an add-on has a few views, but only some should be accessible through the menu. For example, the add-on "Email Manager" has three views available in its menu:

- Overview
- Create email
- Reports

The menu provider looks like this:

```csharp
[MenuProvider]
public class EmailsMenuProvider: IMenuProvider {
  public IEnumerable<MenuItem> GetMenuItems() {
    // parent
    var emailsSection = new UrlMenuItem("Email manager", "/global/emails", ResolveMenuUrl("Overview")) {
      IsAvailable = (request) => true
    };

    var overview = new UrlMenuItem("Overview", "/global/emails/overview", ResolveMenuUrl("Overview")) {
      IsAvailable = (request) => true,
        SortIndex = 100
    };
    var create = new UrlMenuItem("Create email", "/global/emails/create", ResolveMenuUrl("Create")) {
      IsAvailable = (request) => true,
        SortIndex = 200
    };
    var reports = new UrlMenuItem("Reports", "/global/emails/reports", ResolveMenuUrl("Reports")) {
      IsAvailable = (request) => true,
        SortIndex = 300
    };

    return new MenuItem[] {
      emailsSection,
      overview,
      create,
      reports,
    };
  }

  public static string ResolveMenuUrl(string item) {
    var moduleUrl = Paths.ToResource(typeof (EmailsMenuProvider), "emails");
    return UriUtil.Combine(moduleUrl, item);
  }
}
```

**Create email** is a form with a regular submit button. After a user sends an email, they are redirected to the **Mail sent** confirmation page, which is not rendered in the menu; however, it should have the  **Create email**menu item highlighted.

To do this, the **Mail sent** view should also be added to the provider with its path based on the **Create email** path (`/global/emails/create/mailsent`) and the `IsAvailable` option set to false. Then, the option is not rendered in the menu but will highlight its direct parent.

```csharp
[MenuProvider]
public class EmailsMenuProvider: IMenuProvider {
  public IEnumerable<MenuItem> GetMenuItems() {
    // parent
    var emailsSection = new UrlMenuItem("Email manager", "/global/emails", ResolveMenuUrl("Overview")) {
      IsAvailable = (request) => true
    };

    var overview = new UrlMenuItem("Overview", "/global/emails/overview", ResolveMenuUrl("Overview")) {
      IsAvailable = (request) => true,
        SortIndex = 100
    };
    var create = new UrlMenuItem("Create email", "/global/emails/create", ResolveMenuUrl("Create")) {
      IsAvailable = (request) => true,
        SortIndex = 200
    };
    var reports = new UrlMenuItem("Reports", "/global/emails/reports", ResolveMenuUrl("Reports")) {
      IsAvailable = (request) => true,
        SortIndex = 300
    };
    var mailSent = new UrlMenuItem(string.Empty, "/global/emails/create/mailsent", ResolveMenuUrl("ResendMessage")) {
      IsAvailable = (request) => false,
        SortIndex = 400
    };

    return new MenuItem[] {
      emailsSection,
      overview,
      create,
      reports,
      mailSent
    };
  }

  public static string ResolveMenuUrl(string item) {
    var moduleUrl = Paths.ToResource(typeof (EmailsMenuProvider), "emails");
    return UriUtil.Combine(moduleUrl, item);
  }
}
```
