2012-08-30 1 views
1

내비게이션 링크 행을 구현하는 아래 코드에서 선택한 항목을 추적하는 더 좋은 방법이 있습니까?ASP.NET MVC에서 선택한 항목을 깨끗하게 추적해야합니까?

@Html.ActionLink(  
     "PreApproval", 
     "Summary", 
     new { mode = "preapproval" }, 
     new { @class = Model.Mode == "preapproval" ? "selected" : "notselected" }) | 
@Html.ActionLink(
     "ActionNeeded", 
     "Summary", 
     new { mode = (string)null }, 
     new { @class = string.IsNullOrWhiteSpace(Model.Mode) ? "selected" : "notselected" }) | 
... 

메뉴 탐색 기능을 포함해야합니까? 아니면 표준 방식입니까?

+0

좋아, 내가 actionlink라는 html 도우미를 만들고 그냥 여부를 선택했는지 여부를 말하기 위해 매개 변수를 가져 간다면 wouldnt 상상해보십시오 –

+0

또한 ViewModel에 CssClass 변수를 추가하여 당신의 @class 선언에. 나는이 경우에 6, 1, 6 그러나 다른 것에서 생각한다. – Tommy

답변

2

약간 Func<bool, string> 도우미로 캡슐화 할 수 있지만 구입하는 대상에 따라 다릅니다. 디버깅하는 동안 도우미 메서드로 이동하지 않고도 이해할 수 있도록 &을 이해하는 것이 더 명확합니다.

20 개 이상의 링크가있는 경우 리팩터링 할 수 있습니다. 그렇게하면 예를 들어, CSS 클래스 이름이 "selected/notselected"에서 "current/notcurrent"또는 다른 것으로 변경되면 1 곳에서 업데이트 할 수 있습니다.

MVC4에서 CSS 클래스 이름이 null 또는 빈 문자열 인 경우 Razor는 class 속성을 전혀 렌더링하지 않습니다 (생략 함). 그렇게하면 선택한 링크에 "selected"클래스를 넣고 "notselected"클래스를 제거 할 수 있습니다.

관련 문제