Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [C# MVC] Aggiungere elemento a link attivo

    ciao!

    io ho menu condiviso in tutte le pagine, e devo aggiungere un elemento solo quando il link corrisponde alla pagina attiva.

    questo il menu:
    codice:
    <ul class="nav flex-column">
            <li class="nav-item">
                <a class="nav-link" href="#sub_presidi" data-toggle="collapse" data-target="#sub_presidi">PRESIDI</a>
                <div class="collapse show" id="sub_presidi" aria-expanded="false">
                    <ul class="flex-column pl-2 nav">
                        <li class="nav-item">
                            <a class="nav-link py-0" href="~/Presidi/Nuovo">
                                Nuovo
                            </a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link py-0" href="~/Presidi">
                                    Elenco
                            </a>
                        </li>
                    </ul>
                </div>
            </li>
        </ul>
    l'elemento da aggiungere dinamicamente è questo:
    codice:
    <i class="fas fa-angle-right"></i>
    una icona fontawesome in sostanza.
    qualche idea su come fare???

  2. #2
    sto provando ad adattare questa classe:
    codice:
        public static class MenuHelper
        {
            public static MvcHtmlString MenuLink(this HtmlHelper htmlHelper, string linkText, string actionName, string controllerName, object routeValues = null, object htmlAttributes = null)
            {
                string currentAction = htmlHelper.ViewContext.RouteData.Values["action"] as string;
                string currentController = htmlHelper.ViewContext.RouteData.Values["controller"] as string;
    
                System.Diagnostics.Debug.WriteLine(currentAction);
                System.Diagnostics.Debug.WriteLine(currentController);
    
                var ulTag = new TagBuilder("li");
                var link = htmlHelper.ActionLink(linkText, actionName, controllerName, routeValues, htmlAttributes);
                if (actionName == currentAction && controllerName == currentController)
                {
                    ulTag.AddCssClass("active");
                }
                ulTag.InnerHtml = link.ToHtmlString();
                return MvcHtmlString.Create(ulTag.ToString());
            }
        }
    l'unico problema è che mi da currentAction e currentController errati.
    in currentAction mi da sempre MenuLeft, che è view condivisa da tutte le pagine (il menu di sinistra).
    e in currentController mi da sempre Home, anche se ho cambiato controller.

  3. #3
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    dove richiami il metodo MenuLink ?

  4. #4
    direttamente dentro alla shared view per il menu.

    una cosa del genere:
    codice:
    <li>
      @Html.MenuLink("Resume", "Index", "Resume", "" )
    </li>

  5. #5
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    beh se lo chiami da lì mi pare ovvio che la Action restituita sia MenuLeft, no ?
    Hai provato a richiamarlo dalla view
    _Layout ?


  6. #6
    Quote Originariamente inviata da djciko Visualizza il messaggio
    beh se lo chiami da lì mi pare ovvio che la Action restituita sia MenuLeft, no ?
    Hai provato a richiamarlo dalla view
    _Layout ?

    no non ci ho provato in effetti.
    ma il discorso è che cosi dovrei spostare il menu dentro a _Layout.
    giusto??

  7. #7
    Moderatore di ASP.net L'avatar di djciko
    Registrato dal
    Nov 2002
    Messaggi
    6,887
    se il tutto viene renderizzato nella pagina "finale", no: il menu' essendo in una view condivisa dovrebbe essere raggiungibile da qualsiasi altra

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.