[ASP.NET MVC] Areas 사용시 ActionLink 방법
Areas를 이용할 경우 ActionLink 사용시 다른 Areas로 이동하기 위한 별도의 매개변수가 보이지 않아 당황하게 된다. 이 경우 area 지정을 위한 별도의 매개변수가 존재하지 않지만, Route에 대한 이해만 가지고 있으면 해법이 보이게 된다. url 요청 정보는 RouteData에 캡슐화 되는데, 이 부분을 이용하면 간단하게 작성이 가능하다.
Page 속성인 RouteData에는 RequestContext의 RouteData를 가져온다. 여기에는 Controller와 Action 값이 등록되어 있다. Url을 생성할때도 이 RouteData를 토대로 작성되어 지는데, 파라메터가 추가된 경로를 생성하기 위해 종종 RouteValueDictionary(IDictionary를 구현하는…)를 설정해 주기도 한다.
<%:Html.ActionLink(“수정하기”, “Modify”, new { id = 1 }) %>
{controller}/{action}/{id} 형식과 같은 기본 Route가 설정되어 있을 경우, url은 다음과 같이 생성될것이다.
http://[domain]/Board/Modify/1
만약 new { id = 1 } 대신 new { articleId = 1} 을 사용할 경우 url은…
http://[domain]/Board/Modify?articleId=1
이와 같이 생성될것이다.
마찬가지로 new { area = “admin”} 을 설정해보면…
“admin” 이라는 이름을 가진 영역이 있는지를 찾게 된다. 예를 들어 관리자 페이지가 admin이라는 영역에 들어있을 경우, 관리자 페이지 접근을 위한 ActionLink는 다음과 같이 작성 가능하다.
<%:Html.ActionLink(“관리자 접속”, “Index”, “Home”, new { area = “admin” }, null) %>
이 경우 admin이라는 이름을 가진 영역의 Home 컨트롤러의 Index 액션메서드를 호출하게 된다.