2017-02-05 70 views
0
我有麻煩在我的導航欄中的活動裏來改變顏色,當我點擊它,並轉到視圖

,我已經包括下面的一些代碼,但我告訴你更多,如果需要MVC5 - 導航欄積極的顏色

這是被放置在我的佈局共享視圖我的Navbar代碼:

<header id="main-header"> 
    <div class="container"> 
     <a href="@Url.Action("Index", "Home")"> 
      <img src="~/logo.png" id="logo" alt="logo" /> 
     </a> 
     <nav class="main-nav"> 
      <ul> 
       @if (User.IsInRole("Admin")) 
       { 
        <li>@Html.ActionLink("Venues", "Index", "Venues")</li> 
        <li>@Html.ActionLink("Events", "Index", "Events")</li> 
        <li>@Html.ActionLink("Bands", "Index", "Bands")</li> 
        <li>@Html.ActionLink("Admin", "Admin", "Home")</li> 
        @Html.Partial("_LoginPartial") 
       } 
       else 
       { 
        <li>@Html.ActionLink("Venues", "Index", "Venues")</li> 
        <li>@Html.ActionLink("Events", "Index", "Events")</li> 
        <li>@Html.ActionLink("Bands", "Index", "Bands")</li> 
        <li>@Html.Partial("_LoginPartial")</li> 
       } 
      </ul> 
     </nav> 
    </div> 
</header> 

這是頁眉-N​​AV css類我有:

.main-nav { 
    float: right; 
    padding-top: 17px; 
} 
.main-nav li { 
    float: left; 
    list-style: none; 
    margin-right: 10px; 
    position: relative; 
} 
.main-nav li:last-child { 
    margin-right: 0px; 
} 
.main-nav li.current > a { 
    border: 1px solid; 
} 
.main-nav li a { 
    text-transform: uppercase; 
    font-size: 15px; 
    color: #fff; 
    font-weight: 400; 
    padding: 2px 10px; 
    font-family: 'Montserrat', sans-serif; 
} 

回答

2

在所需的控制器你CA的每個操作方法ñ添加ViewBag值:

public ActionResult Index() 
{ 
    ViewBag.Action = ControllerContext.RouteData.Values["Action"].ToString(); 
    ViewBag.Controller = ControllerContext.RouteData.Values["Controller"].ToString(); 

    return View(); 
} 

然後在視圖中,您可以使用以下方法來應用所需的CSS類:

<li class="@(ViewBag.Action == "Index" && ViewBag.Controller == "Venues" ? "current" : "")">@Html.ActionLink("Venues", "Index", "Venues")</li> 
<li class="@(ViewBag.Action == "Index" && ViewBag.Controller == "Events" ? "current" : "")">@Html.ActionLink("Events", "Index", "Events")</li> 
<li class="@(ViewBag.Action == "Index" && ViewBag.Controller == "Bands" ? "current" : "")">@Html.ActionLink("Bands", "Index", "Bands")</li> 
<li class="@(ViewBag.Action == "Admin" && ViewBag.Controller == "Home" ? "current" : "")">@Html.ActionLink("Admin", "Admin", "Home")</li> 

這可能是這些簡單的鏈接一個確定的解決方案 - 但如果你是要添加更多我會建議添加您自己的自定義HtmlHelper。見接受的答案這裏瞭解更多信息:How to add "active" class to Html.ActionLink in ASP.NET MVC

編輯:

public class EventsController : Controller 
{ 
    public ActionResult Index() 
    { 
     ViewBag.LinkText = "Events"; 

     return View(); 
    } 
} 

然後鏈接也只是,如:

您可以通過只是有這個控制器中更加簡化它:

<li class="@(ViewBag.Linktext == "Events" ? "current" : "")">@Html.ActionLink("Events", "Index", "Events")</li>