Szukałem w pobliżu, próbując znaleźć odpowiednie rozwiązanie do przypisywania klasy "aktywny/aktualny" do elementów menu ze strony wzorcowej. Linia jest podzielona w dół w odniesieniu do tego, czy wykonać tę stronę kontra klient.aktywny element menu - asp.net strona główna mvc3
Prawdę mówiąc, jestem nowy zarówno w JavaScript, jak i MVC, więc nie mam zdania. Wolałbym robić to w "najczystszy" i najbardziej odpowiedni sposób.
Mam następujący kod jQuery, aby przypisać "aktywną" klasę do pozycji <li> ... jedynym problemem jest "indeks" lub domyślny element menu widoku zawsze będzie przypisany do aktywnej klasy, ponieważ adres URL jest zawsze podciągiem innych linków menu:
(default) index = localhost/
link 1 = localhost/home/link1
link 2 = localhost/home/link1
$(function() {
var str = location.href.toLowerCase();
$('#nav ul li a').each(function() {
if (str.indexOf(this.href.toLowerCase()) > -1) {
$(this).parent().attr("class","active"); //hightlight parent tab
}
});
Czy jest lepszy sposób na robienie tego, chłopaki? Czy ktoś przynajmniej pomógłby mi uzyskać wersję kuloodporną po stronie klienta? Aby "indeks" lub domyślny link był zawsze "aktywny"? Czy istnieje sposób przypisania fałszywego rozszerzenia do metody indeksu? jak zamiast podstawowego adresu URL byłby to localhost/home/dashboard
, aby nie był podłańcuchem każdego linku?
Prawdę mówiąc, nie podążam za metodami działania po stronie serwera, dlatego próbuję zrobić to po stronie klienta z jQuery ... każda pomoc byłaby doceniana.
Warto zauważyć, że htmlHelper.ActionLink() wymaga "używania System.Web.Mvc.Html;" – 4imble
Działa doskonale +1 – 4imble
Musisz również zaimportować przestrzeń nazw w swoim widoku, jeśli używasz Razor w MVC3, możesz to zrobić, po prostu dodając @using do widoku –
Duncan