Как динамически создать меню с помощью пункта, выбранного в MVC5 Razor View? - PullRequest
1 голос
/ 25 февраля 2020

У меня есть это:

                <ul class="side-nav">
                  <li class="side-nav-item active">
                    <a @Url.Action("Dashboard", "Home")>
                        <i class="dripicons-meter"></i>
                        <span> Dashboard </span>
                    </a>
                  </li>
                  <li class="side-nav-item">
                    <a @Url.Action("New", "Ticket")>
                        <i class="dripicons-plus"></i>
                        <span> @_Layout.NewTicket </span>
                    </a>
                  </li>
                 <li class="side-nav-item">
                  @***** submenu ******@ 
                    <a href="#nav-settings" class="nav-app side-nav-link" data-toggle="collapse" aria-expanded="false">
                      <i class="dripicons-view-apps"></i>
                      <span class="mf-rotate"> @_Layout.Settings </span>
                      <span class="menu-arrow"></span>
                    </a>
                    <ul id="nav-settings" class="side-nav-second-level collapse">
                      <li>
                        <a href="@Url.Action("Index", "UserAdministration")">@_Layout.ManageUsers</a>
                      </li>
                      <li>
                        <a href="@Url.Action("Index", "MailNotifications")">@_Layout.MailingListManager</a>
                      </li>
                    </ul>
                  </li>
                </ul>

Я хочу динамически создать пункт меню, выбранный с активным классом, также для подменю. Какой лучший способ? через c # или js? с помощью c # я нашел это:

public static class MenuExtensions
{
    public static MvcHtmlString MenuItem(this HtmlHelper htmlHelper, string text, string action, string controller)
    {
        var a = new TagBuilder("a");
        var routeData = htmlHelper.ViewContext.RouteData;
        var currentAction = routeData.GetRequiredString("action");
        var currentController = routeData.GetRequiredString("controller");
        if (string.Equals(currentAction, action, StringComparison.OrdinalIgnoreCase) &&
            string.Equals(currentController, controller, StringComparison.OrdinalIgnoreCase))
        {
            a.AddCssClass("active");
        }
        a.InnerHtml = htmlHelper.ActionLink(text, action, controller).ToHtmlString();
        return MvcHtmlString.Create(a.ToString());
    }
}

и для использования @Html.MenuItem("Home", "Index", "Home")

но как мне вставить теги <i class = "..."> </i> e <span>? Спасибо

...