2012-01-29 3 views
0

.net mvc3 웹 사이트가 있습니다. 그리고 나는 톱 메뉴를 구현해야합니다. 메뉴 태그의 각각은 자신의 행동을지도하고 내가 지금 가지고있는 또 다른 view.This 표시됩니다 :Mvc3 사용자 지정 작업 링크 구현

<ul id="menu"> 
     <li>@Html.ActionLink("Home", "Index", "Home")</li> 
     <li>@Html.ActionLink("Products", "Products", "Home")</li> 
     <li>@Html.ActionLink("Pricing", "Pricing", "Home")</li> 
     <li>@Html.ActionLink("Our Team", "OurTeam", "Home")</li> 
     <li>@Html.ActionLink("Contact Us", "ContactUs", "Home")</li> 
</ul><!-- /menu --> 

이보기는 내가 구현해야 (이 모든 페이지에 표시해야하기 때문에) 내 레이아웃 Html.RenderAction("Header", "Home");입니다 사용자 정의 ActionLink. 앵커 텍스트는 다음과 같아야합니다 :

<span>text</span><b>text</b> 

"텍스트는"(처음으로 리튬의 예를 들어) 홈 되어 현재의 ActionLink 클래스를 추가해야합니다 앵커에 "선택한".

어떻게 할 수 있습니까? 도와주세요

p.s 현재보기의 "선택한"클래스로 내 웹 사이트의 각보기에이 메뉴를 추가 할 수 있지만 좋은 해결책은 아닙니다.

답변

1

.

HttpContext.Current.Request.RequestContext.RouteData.Values["controller"].ToString() 
HttpContext.Current.Request.RequestContext.RouteData.Values["action"].ToString() 

그런 다음 방법은 이전의 대답했다 당신의 actionlink에 "선택"클래스를 넣어 개인적으로

<li>@Html.ActionLink("Home", "Index", "Home", null, new {@class = ":selected"})</li> 

내가 만듭니다 : 이보고 뷰에 체크 할 수 있습니다 루트 치 이외의 「MenuAction」의리스트를 포함한 ViewModel. bool 프로퍼티 「Selected」 이모는 데이터를 훨씬 더 깨끗하게 처리 할 것입니다.

+0

이것은 좋은 해결책입니다. 하지만 내 메뉴는 부분보기이며 레이아웃에서 호출됩니다. 그래서 HttpContext.Current.Request.RequestContext.RouteData.Values ​​[ "action"]. ToString()은이 부분의 이름을 항상 반환 할 것이고,이 이름은 현재 작업 이름과 결코 일치하지 않을 것입니다. –

+0

@ Html.Action과 같은 것을 호출하십시오. "메인 메뉴", "메뉴"). 당신이 논리를 수행하고 컨트롤러에서보기를 준비보다 – Iridio

+0

내 실수로 var currentAction = htmlHelper.ViewContext.RouteData를 사용했습니다.HttpContext.Current.Request.RequestContext.RouteData.Values ​​[ "action"] 대신에 GetRequiredString ("action"). ToString(). 이제 일이야. 감사합니다 –

0

ActionLink 과부하 class을 추가 할 수 있습니다

<li>@Html.ActionLink("Home", "Index", "Home", null, new {@class = ":selected"})</li> 

5 번째 매개 변수는 HTML 속성입니다. 이 오버로드의

MSDN ActionLink


업데이트 :

당신이 현재 표시 행동에 "선택"클래스를 넣을를 잘 이해한다면
$(function(){ 
    var controllerName ='ViewContext.RouteData.Values["Controller"]'; 
    $('#' +controllerName).addClass(':selected'); 
}); 
+0

정적 "선택한"클래스를 홈 링크에 추가합니다. 현재 ActionLink –

+0

@user1086344에 "selected"를 동적으로 추가해야합니다. 언제 추가할까요? – gdoron

+0

예를 들어 "제품"을 클릭하면 페이지가 "제품"보기를로드하고 "선택한"클래스를 "제품"앵커에 추가하고 이전 앵커에서 제거해야합니다. –