문제
ASP.NET MVC 응용 프로그램에 매핑하고 싶은 두 개의 경로가 있습니다.
- /사용자/로그인
- /user/{userId}/{username}/{action} (eg/user/1/blah/profile)
내가 정의한 경로는 다음과 같습니다.
routes.MapRoute(
"Profile",
"Users/{userID}/{username}/{action}",
new { controller = "Users", action = "Profile" }
);
routes.MapRoute(
"Default",
"{controller}/{action}/{id}",
new { controller = "Home", action = "Index", id = "" }
);
이것은 대부분의 경우 지금까지 훌륭하게 작동합니다. 다음 URL은 내 홈페이지에서 작동합니다.
<%= Html.ActionLink((UsersController x) => x.Login(), "Login") %>
<%= Html.ActionLink((UsersController x) => x.Profile(1, "blah") %>
이지도는 (정중하게) :
/사용자/로그인/사용자/1/blah
그러나/사용자/1/blah로 탐색 한 후에 로그인 URL은 즉시/users/1/blah/로그인으로 전환됩니다. 이 문제를 해결하는 방법이 있습니까?
해결책
당신은 사용하고 싶습니다 <%=Html.RouteLink%>
이것은와 매우 유사합니다 여기서 볼 수있는 문제
다른 팁
당신의 경로가 승인 필터에 도달하고 있습니까? /users/1/blah 페이지를 보려면 로그인 해야하는 요구 사항이 있습니까? (예 : UsersController 클래스 또는 프로필 조치에 [승인] 속성이 있습니까?)
그렇다면 승인 필터가 아니라면 나는 고도로 이것을 구현할 것을 제안합니다 라우팅 디버거 도구 프로젝트에.
제휴하지 않습니다 StackOverflow