In ASP.NET MVC-Anwendungen der Html.ActionLink-Helfer wird häufig zum Erstellen von Navigationslinks verwendet. Bei der Einbindung des Bootstrap-Stils ist es wichtig, die Klasse „aktiv“ auf das entsprechende Navigationselement anzuwenden. Dieser Artikel führt Sie durch das Hinzufügen der „aktiven“ Klasse zu Navigationslinks mithilfe des Html.ActionLink-Hilfsprogramms und bietet eine elegantere Lösung mithilfe einer HTML-Hilfsprogrammerweiterung.
Stellen Sie sich das folgende Szenario vor:
<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>
Dieser Code generiert die Navigationslinks, aber die Klasse „aktiv“ wird auf die angewendet -Tag, was zu einer ungültigen Bootstrap-Struktur führt. Um dies zu beheben, wenden Sie die Klasse „aktiv“ auf die Klasse
<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>
Dadurch wird die „aktive“ Klasse korrekt auf das aktuelle Navigationselement basierend auf der aktiven Seite angewendet.
Um eine flexiblere und wiederverwendbarere Lösung bereitzustellen, können Sie eine HTML-Hilfserweiterung wie diese erstellen:
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) && acceptedControllers.Contains(currentController) ? cssClass : String.Empty; }
Diese Erweiterungsmethode erfordert drei Parameter: Controller, Aktionen und eine optionale CSS-Klasse. Es prüft, ob die aktuelle Aktion und der Controller mit den angegebenen Werten übereinstimmen, und gibt in diesem Fall die CSS-Klasse oder andernfalls eine leere Zeichenfolge zurück.
Um diese Erweiterung zu verwenden, fügen Sie a hinzu using-Anweisung zur Seite:
@using YourNamespace;
Dann können Sie in der Ansicht die „aktive“ Klasse als anwenden folgt:
<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>
Indem Sie die Klasse „aktiv“ auf das richtige HTML-Element anwenden und die bereitgestellte HTML-Hilfserweiterung nutzen, können Sie den aktiven Status von Navigationslinks in ASP effektiv verwalten .NET MVC-Anwendungen, die Konsistenz und eine sauberere Codeorganisation gewährleisten.
Das obige ist der detaillierte Inhalt vonWie gestaltet man aktive Navigationslinks in ASP.NET MVC effektiv?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!