• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

[ASP.NET] Aktywne menu

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
0 głosów
506 wizyt
pytanie zadane 13 lutego 2018 w C# przez HDRGXS Początkujący (470 p.)

Dobry wieczór wszystkim ^^

Kilka dni temu zacząłem zabawę z ASP i jedną z pierwszych rzeczy, które chciałem zrobić to aktywne menu. Pod tym określeniem rozumiem, że przy przejściu na konkretną podstronę do elementu menu dodawana jest klasa active.

Zmodyfikowałem standardowy kod menu generowany przez visual studio w taki sposób:

<li class="
  @if (ViewData["Title"].ToString() == "Contact")
  {
    <text>active</text>
  }
">
  <a asp-area="" asp-controller="Home" asp-action="Contact">Contact</a>
</li>

ViewData["Title"] przechowywane jest w Contact.cshtml w folderze widoku. Przypuszczam, że mimo działania tej metody, jest ona nie najlepsza. Chciałbym poznać lepsze rozwiązania tego problemu w ASP, oraz dowiedzieć się czemu ta metoda nie sprawdza się najlepiej. Ponadto, jak przypuszczam lepiej byłoby wykonać to wykorzystując js. Chciałbym też poznać waszą opinię w tej drugiej sprawie.

Pozdrawiam smiley

komentarz 14 lutego 2018 przez Secrus Nałogowiec (32,880 p.)
Skąd uczysz się ASP.NET?
komentarz 14 lutego 2018 przez HDRGXS Początkujący (470 p.)
Dokumentacja MS'a, szkolenia linkedin i kilka innych stron. Mam jeszcze zamiar wykorzystać kilka innych źródeł. Ale ogólnie wszystko co MS oferuje + podstawy które do tej pory zdobyłem pracując w innych językach.

2 odpowiedzi

+1 głos
odpowiedź 14 lutego 2018 przez achilles147 Dyskutant (9,580 p.)
wybrane 23 marca 2018 przez HDRGXS
 
Najlepsza

Cześć,

Tutaj masz odpowiedź jak to można zrobić w trochę ładniejszy sposób 

https://stackoverflow.com/questions/20410623/how-to-add-active-class-to-html-actionlink-in-asp-net-mvc

 

czyli korzystasz z ViewVontext.RouteData żeby pobrać nazwę akcji z której został wyrenderowany widok a następnie porównujesz ją z konkretnym linkiem żeby mu nadać klasę :)

 

<ul class="nav navbar-nav">
    <li class="@(ViewContext.RouteData.Values["Action"].ToString() == "Index" ? "active" : "")">@Html.ActionLink("Home", "Index", "Home")</li>
    <li class="@(ViewContext.RouteData.Values["Action"].ToString() == "About" ? "active" : "")">@Html.ActionLink("About", "About", "Home")</li>
    <li class="@(ViewContext.RouteData.Values["Action"].ToString() == "Contact" ? "active" : "")">@Html.ActionLink("Contact", "Contact", "Home")</li>
</ul>

 

komentarz 14 lutego 2018 przez HDRGXS Początkujący (470 p.)
A no ładniej to wygląda i przy zastosowaniu heleperów może być naprawdę fajne. Ale może są jeszcze jakieś inne metody ^^
0 głosów
odpowiedź 15 lutego 2018 przez HDRGXS Początkujący (470 p.)
może jest ktoś kto mógłby się jeszcze wypowiedzieć w tej sprawie ^^

Podobne pytania

0 głosów
1 odpowiedź 311 wizyt
pytanie zadane 2 marca 2020 w C# przez Moras Obywatel (1,620 p.)
0 głosów
1 odpowiedź 558 wizyt
pytanie zadane 20 lutego 2018 w C# przez tomek2323 Bywalec (2,050 p.)
0 głosów
1 odpowiedź 380 wizyt
pytanie zadane 10 lutego 2018 w C# przez tomek2323 Bywalec (2,050 p.)

93,440 zapytań

142,431 odpowiedzi

322,679 komentarzy

62,802 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

...