2010-11-26 3 views
2

내 MVC 웹 응용 프로그램에서 다음을 달성하는 가장 좋은 방법은 무엇입니까?ASP.NET MVC에서 프로그래밍 방식으로 스타일 적용 MVC MasterPage보기

저는 Site.Master라는 뷰 (내 MasterPage 뷰)를 가지고 있으며,이 뷰의 맨 위에는 5 개의 링크가 있습니다.이 링크는 내 메인 사이트 탐색 도구 역할을합니다. 내가 원하는 무엇

<ul> 
    <li><a href="">Home</a></li> 
    <li><a href="">Links</a></li> 
    <li><a href="">Contact Us</a></li> 
    ...etc 
</ul> 

는 사용자가 현재보고있는 사이트의 어느 부분에 따라, 해당 텍스트 링크를 강조 할 수있다, 그래서 그들은 '문의하기'페이지를 사용한 경우 연락처 링크 마스터 페이지보기에 다른 CSS 스타일이 적용됩니다.

Web Forms에서 각 링크는 HyperLink 컨트롤이었고 MasterPage의 코드 뒤에 속성이 있으므로 각 HyperLink 컨트롤에 관련 CssStyle을 할당했습니다.

내 MasterPage보기에서 동일한 것을 달성하는 가장 좋은 방법은 무엇입니까? 이제 MVC를 사용하고 있습니까?

public static MvcHtmlString MenuLink(
    this HtmlHelper htmlHelper, 
    string linkText, 
    string actionName, 
    string controllerName 
) 
{ 
    string currentAction = htmlHelper.ViewContext.RouteData.GetRequiredString("action"); 
    string currentController = htmlHelper.ViewContext.RouteData.GetRequiredString("controller"); 
    if (actionName == currentAction && controllerName == currentController) 
    { 
     return htmlHelper.ActionLink(
      linkText, 
      actionName, 
      controllerName, 
      null, 
      new { 
       @class = "current" 
      }); 
    } 
    return htmlHelper.ActionLink(linkText, actionName, controllerName); 
} 

그리고 내 생각에이 도우미를 사용

답변

4

아마 그 메뉴 링크를 생성하고 현재의 컨트롤러를 기반으로 작업이 앵커에 CSS 클래스 current을 적용 할 것 HTML 도우미를 작성합니다 :

<ul> 
    <li><%= Html.MenuLink("Home", "Index", "Home") %></li> 
    <li><%= Html.MenuLink("Links", "Links", "Home") %></li> 
    <li><%= Html.MenuLink("Contact us", "Contact", "Home") %></li> 
</ul> 

그런 다음 남아있는 모든 것을 강조하기 위해 CSS 파일이 current 클래스를 정의하는 것입니다

.current { 
    ... 
} 
+0

안녕하세요. 이것은 거의 완벽하게 작동합니다. 내가 가진 문제는 사이트의 해당 섹션 중 하나에 대해 해당 컨트롤러 (Article 또는 LatestArticle)에 대해 2 가지 가능한 작업 중 하나를 통해 해당 페이지로 이동한다는 것입니다. 부분 뷰는 기본 'LatestArticle'액션 대신 'Article'액션을 호출하는 사이트에서 사용하므로 부분 뷰를 통해 사이트의이 섹션을 탐색 할 때마다 Helper 메소드의 조건은 절대로 발생하지 않습니다. 'Article'이 actionName 매개 변수로 내 MenuLink 메서드에 전달되지 않기 때문에 만났습니다. 어떤 제안? – marcusstarnes

+0

그럼 당신이해야 할 일은 도우미 메서드의 서명을 수정하여 단일 동작 대신 동작 목록을 수락 한 다음 현재 동작이이 목록의 요소 중 하나와 일치하는지 확인하는 것입니다. –

관련 문제