MVC Layout | otomatik Link aktif etme!

  1. RecepCakmakci
    3
    20
    8.02.2020 00:33:00

    Merhaba arkadaşlar. MVC'ye çalışmaya başladım, bir tema giydirmeye çalışırken ufak bir sorunla karşılaştım. Layout kullandığım için haliyle her sayfada Anasayfa linki active olarak görünüyor. Örneğin "Hizmetlerimiz" sayfasındayım fakat Anasayfa'nın linki aktif olarak görünüyor.

    asp.net-mvc 9 gün önce 76 Görüntüleme

( 2 ) Cevap

  1. mfatih
    1
    4123
    10.02.2020 23:20:00

    muhtemelen aşağıdaki gibi class="active" kodu var ana sayfa linkinde

    <ul class="nav navbar-nav">
        <li class="active">@Html.ActionLink("AnaSayfa", "Index", "Home")</li>
        <li>@Html.ActionLink("Hakkımızda", "About", "Home")</li>
        <li>@Html.ActionLink("Hizmetler", "Services", "Home")</li>
    </ul>
    

    eğer hangi sayfaya gidersem gideyim, link aktif olmasın diyorsan aşağıdaki gib yapman yeterli,

    <ul class="nav navbar-nav">
        <li>@Html.ActionLink("AnaSayfa", "Index", "Home")</li>
        <li>@Html.ActionLink("Hakkımızda", "About", "Home")</li>
        <li>@Html.ActionLink("Hizmetler", "Services", "Home")</li>
    </ul>
    

    yani bu kodu kaldırman yeterli class="active"

  2. mfatih
    2
    4123
    10.02.2020 23:54:00

    fakat otomatik olarak hangi sayfada olursam, o link aktif olsun istiyorsan ;

    ViewContext.RouteData.Values["Action"].ToString()
    

    bu kod sana dinamik olarak hangi sayfada olacağını verir, gerisi if else e kalıyor;

    <ul class="nav navbar-nav">
        <li class="@(ViewContext.RouteData.Values["Action"].ToString() == "Index" ? "active" : "")">@Html.ActionLink("Anasayfa", "Index", "Home")</li>
        <li class="@(ViewContext.RouteData.Values["Action"].ToString() == "About" ? "active" : "")">@Html.ActionLink("Hakkımızda", "About", "Home")</li>
        <li class="@(ViewContext.RouteData.Values["Action"].ToString() == "Contact" ? "active" : "")">@Html.ActionLink("İletişim", "Contact", "Home")</li>
    </ul>
    

Cevabınız